我有一个像这样的列表属性
protected IList<System.Windows.Media.Color> colors;
public IList<System.Windows.Media.Color> Colors
{
get { return colors; }
set { colors = value; }
}
我有一个功能
protected void updateBuffers()
每次属性用户更改属性时都需要调用,例如
Colors.Add(...)
...
Colors.Clear(...)
有一种简单的方法吗?
答案 0 :(得分:4)
您可以使用List作为基类创建一个创建其他属性的新对象:
public class CustomList<T> : List<T>
{
public new void Add(T item) {
base.Add(item);
this.UpdateBuffers();
}
}
完全覆盖现有的Add实现需要'new'关键字,在基类中没有标记为virtual
。
感谢Hans Passant和LarsTech在评论中的反馈。
答案 1 :(得分:2)
你不能使用普通列表。
但是,您可以创建自己的类,实现IList<T>
或继承自Collection<T>
。
或者您可以使用ObservableCollection<T>
或任何实现INotifyCollectionChanged
请参阅MSDN了解文档。
此外,如果您使用它们在WPF或Windows 8应用程序中填充UI,ObservableCollection将允许您在绑定中使用您的集合。