首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

类里的一个属性类型是List<>怎么获取add事件

2012-04-08 
类里的一个属性类型是List,如何获取add事件?现在有自定义的a类,item属性类型是泛型C# codepublic class

类里的一个属性类型是List<>,如何获取add事件?
现在有自定义的a类,item属性类型是泛型

C# code
public class A{ public List<int> item { get; set; } //我在A类里怎么能监视这个item的增减?}  


再别的地方给a的item做添加的时候,A类获取这个事件?
C# code
 A a = new A(); a.item.add(1); //调用的地方只执行这些代码不需要额外代码


以上c#怎么能做到?

[解决办法]
实在不行,楼主建个类继承List<T>然后重写Add/Remove方法吧。(可能需要同时实现IList<T>)。
protected class A : List<T>
{
public A : base(){}
public override void Add (T item){
base.Add(item); 
// 在这里调用你自己的代码,触发事件
}
}
(代码我瞎打的,就是演示一下)
[解决办法]
C# code
    class Program    {        static void Main(string[] args)        {            A a = new A();            a.AddEvent += new AddHandler(a_AddEvent);            a.Add(123);            a[1] = 1234;        }        static void a_AddEvent(string messsage,int value)        {            Console.WriteLine("{0} 添加了{1}",messsage,value.ToString());        }    }    public delegate void AddHandler(string message, int value);    public class A    {        public event AddHandler AddEvent = null;        private List<int> item = new List<int>();        public int this[int index]        {            get {                return this.item[index];            }            set            {                this.addValue("索引器",value);            }        }        public void Add(int value)        {            this.addValue("A.Add",value);        }        private void addValue(string message,int value)        {            this.item.Add(value);            if (this.AddEvent != null)            {                this.AddEvent(message,value);            }        }            } 

热点排行