JRS*_*JRS 2 .net events extension-methods
我想为一些内置的.NET类添加事件.例如,我想将以下事件添加到泛型List(T):
我可以想到几种方法来实现这一目标,但我不确定哪种方法最好.
List(T)并覆盖必要的方法和属性.List(T)并遮蔽必要的方法和属性.IList(T),然后包装其余的功能List(T)是IList(T)缺失.显然,选项4是最多的工作,如果我只想扩展一个类,这不是什么大问题.但是,我也想避免讨厌的副作用.
每种方法有哪些优点,缺点和注意事项?
注意:我并不特别关注IList(T).我发现自己也希望将"扩展事件"添加到其他类中.
没有"扩展事件"这样的东西,你不能使用扩展方法来模拟这个:扩展事件不能将状态添加到现有的类,这是你需要的.
我认为你的意思是覆盖而不是超载.这会起作用,这有点笨拙 - 意味着你不能使用ToListLINQ等的法线,因为那样你就得到了一个List<T>.
暗影比重写更糟糕.这意味着可以根据调用者调用方法的方式引发或不引发事件.伊克.
这将是更好的,你可以添加一个扩展方法List<T>来包装它.一个缺点是,如果其他人"知道" 未打开的集合,您将不会发现这样做的更改.
你看过了ObservableCollection<T>吗?请注意,如果您在构造函数中提供它,它将从列表中复制,而不是包装列表.