是否可以在类库中全局订阅事件?

时间:2016-01-06 15:02:57

标签: c# .net

在C#类库项目中,可以全局订阅事件吗?对于例如说该项目包含10个类。如果我必须订阅AppDomain.UnhandledException事件,我可以在每个类

中包含这行代码
AppDomain.CurrentDomain.UnhandledException += MyExceptionHandler;

有没有办法声明这个代码,以便代码不需要在一个dll中重复?

1 个答案:

答案 0 :(得分:2)

假设异常处理程序对所有类都是通用的,并且从这些类创建的实例(又名MyExceptionHandler可以是辅助类中的静态方法),那么您可以尝试使用模块初始化程序,这将允许您在装配加载时运行代码。

answer for more details。特别是,答案中的一条评论将为您提供一种更简单的方法(Fody/ModuleInit),以利用自CLR 2.0以来可用的此功能,但不会在C#中公开。

话虽如此,这似乎是一个非常罕见的要求,因为通常有兴趣接收未处理异常通知的一方是应用程序本身而不是应用程序加载的库。