【问题标题】:How to subscribe to an event inside a facade class如何订阅外观类中的事件
【发布时间】:2009-11-04 11:56:18
【问题描述】:

我有两个项目 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 项目订阅递归类中引发的事件?

【问题讨论】:

    标签: c# events facade subscribe


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      相关资源
      最近更新 更多