在C#类库项目中,可以全局订阅事件吗?对于例如说该项目包含10个类。如果我必须订阅AppDomain.UnhandledException
事件,我可以在每个类
AppDomain.CurrentDomain.UnhandledException += MyExceptionHandler;
有没有办法声明这个代码,以便代码不需要在一个dll中重复?
答案 0 :(得分:2)
假设异常处理程序对所有类都是通用的,并且从这些类创建的实例(又名MyExceptionHandler
可以是辅助类中的静态方法),那么您可以尝试使用模块初始化程序,这将允许您在装配加载时运行代码。
见answer for more details。特别是,答案中的一条评论将为您提供一种更简单的方法(Fody/ModuleInit),以利用自CLR 2.0以来可用的此功能,但不会在C#中公开。
话虽如此,这似乎是一个非常罕见的要求,因为通常有兴趣接收未处理异常通知的一方是应用程序本身而不是应用程序加载的库。