c# 有一个类A,它的一个属性的类型是类B,类B有一个event,返回类型是类C,,类C有一个属性是一个list;现在我想要监控类A,每创建一个类A的对象,其中的属性list的长度变化
时间: 2024-03-11 10:50:49 浏览: 15
您可以使用事件和委托来解决这个问题。在类B中声明一个事件,返回类型是C。然后在类A中声明一个属性,类型是B,并且添加一个事件处理程序,以便在属性B的事件被触发时,可以对属性C中的List进行监视。下面是一个简单的示例代码:
```
//定义类C
public class C
{
public List<int> List { get; set; }
}
//定义类B
public class B
{
public event EventHandler<C> ListChanged;
private C _c = new C();
public C C
{
get { return _c; }
set
{
_c = value;
OnListChanged(_c);
}
}
protected virtual void OnListChanged(C c)
{
ListChanged?.Invoke(this, c);
}
}
//定义类A
public class A
{
private B _b = new B();
public B B
{
get { return _b; }
set
{
_b = value;
_b.ListChanged += B_ListChanged;
}
}
private void B_ListChanged(object sender, C e)
{
Console.WriteLine("List length changed to: " + e.List.Count);
}
}
//使用示例
A a = new A();
a.B = new B() { C = new C() { List = new List<int>() } };
a.B.C.List.Add(1); //输出 "List length changed to: 1"
a.B.C.List.Add(2); //输出 "List length changed to: 2"
```