有没有办法执行事件处理连线的编译时执行?
例如,假设我有一个暴露标准EventHandler<T>
的类,我可以确保此类的任何实例化实例都有OnMyEvent
处理程序,处理? (最好在编译时)
我能看到执行此操作的唯一方法是将eventhandler作为对象构造函数的一部分或在运行时使用反射。还有其他选择吗?
此外,如果C#不允许此功能;出于好奇,做其他任何语言?
答案 0 :(得分:3)
事件 。处理该事件非常罕见强制执行。没有标准的语言/编译器构造用于验证在编译时订阅事件(我怀疑它会非常困难,因为您可以随时在代码中的任何位置有效地订阅/取消订阅 - 可能多次, ie + HandlerA,+ HandlerB,-HandlerA,-HandlerB - 以没有订户结束)。
在您呈现的场景中,必需,然后将其传递给构造函数听起来更合适,但我可能会在此使用Func<...>
或Action<...>
案例(不是EventHandler<T>
)。但这是主观的。
其他方法:
override
一个或多个abstract
成员interface
参数