如果我理解正确,您的模型如下所示:

然后,您希望通过如下所示的方式进行ClassB
通信:Application
ClassA

从面向对象设计的角度来看,这违反了得墨忒耳定律,该定律指出对象只能与其直接邻居对话。ClassA
在这方面,如果可能的话,我建议您在 中进行清理。
从实现的角度来看,我会通过在构造函数中获取它的实例来ClassA
明确声明它的依赖关系。Application
通过这种方式,您可以轻松订阅Application
内部发布的任何事件,ClassA
或者可能ClassB
因为C# 中的内部类可以访问外部类的私有成员:
public class A
{
private readonly Application application;
public A(Application application)
{
if (application == null)
{
throw new ArgumentNullException("application");
}
this.application = application;
this.application.ApplicationExit += application_ApplicationExit;
}
private void application_ApplicationExit(object sender, EventArgs e)
{
// Perform cleanup
}
}