【发布时间】:2013-07-12 11:47:36
【问题描述】:
我有一个这样的列表属性
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(...)
有没有一种优雅简单的方法来做到这一点?
【问题讨论】:
-
你想在每次颜色变化时调用该函数?
-
我会指出你,当对象被添加到列表时,函数 .Add 正在为集合运行,你应该覆盖它,参考stackoverflow.com/questions/1626049/overriding-listts-add
-
尝试创建 List.Add 方法的自定义通用方法,该方法将列表作为参数输入,然后运行所需的方法,即 updateBuffers()。例如 ListAdd(Colors); public void ListAdd(IList List){ List.Add(..);更新缓冲区(); }
-
不要使用 List,你不能覆盖它的方法。最好使用的类是
Collection<T>。与 List 一样工作,但它具有可用于检测添加或修改项目的受保护方法。
标签: c# list properties add