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

我希望Windows项目订阅埋在名为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项目以订阅在递归类中引发的事件?

最佳答案

实际上,您正在尝试在此处打破Law of Demeter
因此,我建议您审查您的设计。但是最简单的选择是在Facade类中公开类似的事件,或为WalkDirectory方法提供一个附加的委托参数。

09-07 03:00