c#list属性添加方法额外操作

时间:2013-07-12 11:47:37

标签: c# list properties add

我有一个像这样的列表属性

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(...)

有一种简单的方法吗?

2 个答案:

答案 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将允许您在绑定中使用您的集合。