我有以下课程:
public class FirstClass
{
public FirstClass()
{
list = new List<SomeType>();
}
public List<SomeType> list;
}
在有人将元素放入该列表之后,是否可以执行一些操作,例如触发不同的方法?
我有以下课程:
public class FirstClass
{
public FirstClass()
{
list = new List<SomeType>();
}
public List<SomeType> list;
}
在有人将元素放入该列表之后,是否可以执行一些操作,例如触发不同的方法?
您应该使用 aObservableCollection<SomeType>
来代替。
ObservableCollection<T>
提供CollectionChanged
您可以订阅的CollectionChanged
事件 - 当添加、删除、更改、移动项目或刷新整个列表时触发该事件。
也许你应该使用ObservableCollection<T>
. 它在添加或删除项目或其他几个事件时触发事件。
List
不会为此公开任何事件。您应该考虑ObservableCollection
改用。它具有CollectionChanged
在添加、删除、更改、移动或刷新整个列表时发生的事件。
你可以做类似的事情
private List<SomeType> _list;
public void AddToList(SomeType item)
{
_list.Add(item);
SomeOtherMethod();
}
public ReadOnlyCollection<SomeType> MyList
{
get { return _list.AsReadOnly(); }
}
但 ObservableCollection 最好。
如果您创建自己的 IList 实现,则可以在将项目添加到列表时调用方法(或执行任何其他操作)。创建一个继承自 IList 的类,并将 T 类型的列表作为私有成员。使用您的私有成员实现每个接口方法,并将 Add(T item) 调用修改为您需要执行的任何操作
代码:
public class MyList<T> : IList<T>
{
private List<T> _myList = new List<T>();
public IEnumerator<T> GetEnumerator() { return _myList.GetEnumerator(); }
public void Clear() { _myList.Clear(); }
public bool Contains(T item) { return _myList.Contains(item); }
public void Add(T item)
{
_myList.Add(item);
// Call your methods here
}
// ...implement the rest of the IList<T> interface using _myList
}