类里的一个属性类型是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); } } }