2

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

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

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

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

在项目 2 中,FileAnalyzerFacade() 创建了 Recurse() 类的实例。Recurse() 类在找到文件时引发事件。所以windows窗体对Recurse()类一无所知,只知道外立面FileAnalyzerFacade()。

门面有以下订阅:

recurse.FileFound += new FilePropertyEventHandler(analyzeFile);

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

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

4

1 回答 1

1

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

于 2009-11-04T12:06:38.187 回答