我在class A
中有一个集合:
class A{
public static List<A> list = new List<A>();
}
我想在class B
中插入一个代码来监控来自class A
的集合,如果此集合更改其大小,则会调用方法:collectionSizeChanged()
class B{
......
public void collectionSizeChanged(){
// some code modifing private objects in class B
}
}
答案 0 :(得分:3)
列表不会公开任何事件,但您可以使用ObservableCollection<T>
来完成这项工作。
var observableCollection = new ObservableCollection<string>();
observableCollection.CollectionChanged += (s, e) =>
{
doStuff();
}
class A
{
public static ObservableCollection<A> list = new ObservableCollection<A>();
}
class B
{
public void StartListening()
{
A.list.CollectionChanged += collectionSizeChanged;
}
public void StopListening()
{
A.list.CollectionChanged -= collectionSizeChanged;
}
private void collectionSizeChange(object sender, NotifyCollectionChangedEventArgs eventArgs)
{
doStuff();
}
}
答案 1 :(得分:1)
List
(或List<T>
)未提供开箱即用的功能。您可能希望改为使用ObservableCollection或者滚动自己的包含列表的类,但会引发您需要的事件。