我想将事件添加到.NET类中的一些内置类中。例如,我希望将以下事件添加到通用List(T)中
我可以想出几种方法来完成这个任务,但我不确定哪种方法是最好的。
functionality.
List(T)继承并覆盖必要的方法,properties.
List(T)继承并隐藏必要的方法和属性。
IList(T)的新类,然后包装IList(T)缺少的List(T)的其余功能。显然,选项4是最多的工作,如果我只想扩展一个类,这不是什么大问题。不过,我也想避免不良的副作用。
每种方法的优点、缺点和注意事项是什么?
注意:我并不是特别关心IList(T)。我发现自己也想把“扩展事件”添加到其他类中。
发布于 2009-09-17 16:36:50
ToList,因为这样您就会得到一个比重写更麻烦的ToList。这意味着根据调用方调用方法的方式,事件可能引发也可能不会引发。Ik.List<T>中添加一个扩展方法来包装它。一个缺点是,如果其他人“知道”未包装的集合,您将不会发现以这种方式进行的更改。你看过ObservableCollection吗?注意,如果在构造函数中提供列表,这将从列表中复制,而不是包装列表。
发布于 2009-09-17 16:35:38
“扩展事件”不存在,扩展属性或除扩展方法以外的任何东西也不存在。就我个人而言,我希望看到扩展属性(考虑到它们只是函数的包装器),但我不确定如何以扩展所需的静态方式实现扩展事件。
没有什么可以阻止您将这些事件添加到类本身。但是,您可能会更成功地查看BindingList<T>,因为它更符合您似乎想要做的监视活动。
https://stackoverflow.com/questions/1439923
复制相似问题