如何订阅Facade类中的事件

时间:2009-11-04 11:56:19

标签: c# events facade subscribe

我有两个项目1:Windows窗体项目和2:一个业务逻辑项目,递归地遍历文件系统寻找特定文件。

我希望windows项目订阅一个名为recurse的类中的事件。我遇到的问题是recurse类的实例在业务逻辑项目的facade类中实例化。

Windows窗体项目通过外观调用业务逻辑,如下所示:

        FileAnalyzerFacade fileAnalyzerFacade = new FileAnalyzerFacade();
        fileAnalyzerFacade.WalkDirectory(path, searchFilter));

在项目2中,FileAnalyzerFacade()创建Recurse()类的实例。 Recurse()类在找到文件时引发事件。所以windows表单对Recurse()类一无所知,只对外部外观FileAnalyzerFacade()。

立面有以下订阅:

recurse.FileFound += new FilePropertyEventHandler(analyzeFile);

当事件被触发时,运行analyzeFile()。

这很好,因为FileAnalyzerFacade()创建了递归类的实例。 如何让windows项目订阅recurse类中引发的事件?

1 个答案:

答案 0 :(得分:1)

实际上,你试图在这里打破Law of Demeter。 因此,我建议您检查一下您的设计。但最简单的选择是在Facade类中公开类似事件,或者为WalkDirectory方法提供额外的委托参数。