2009-11-04 2 views
2

두 개의 프로젝트 1 : Windows Forms 프로젝트와 2 : 특정 파일을 찾기 위해 재귀 적으로 파일 시스템을 걷는 비즈니스 로직 프로젝트 2 개가 있습니다.외관 클래스 내부의 이벤트에 가입하는 방법

나는 recurse라는 클래스에 묻혀있는 이벤트를 구독하는 Windows 프로젝트를 원한다. 내가 가진 문제는 recurse 클래스의 인스턴스가 비즈니스 로직 프로젝트의 facade 클래스 내부에서 인스턴스화된다는 것입니다.

창문 양식 프로젝트는 지금과 같은 외관을 통해 비즈니스 로직을 호출 프로젝트 2 FileAnalyzerFacade()에서

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

은 같이 Recurse() 클래스의 인스턴스를 만듭니다. Recurse() 클래스는 파일을 찾을 때 이벤트를 발생시킵니다. 그래서 윈도우 폼은 Recurse() 클래스에 대해서만 아는 바깥 쪽 정면 FileAnalyzerFacade()를 알지 못합니다. 이벤트가 analyzeFile을 해고

recurse.FileFound += new FilePropertyEventHandler(analyzeFile); 

()가 실행됩니다 :

외관은 다음과 구독을 가지고있다.

FileAnalyzerFacade()가 recurse 클래스의 인스턴스를 생성하므로이 모든 것이 좋습니다. 어떻게 윈도우 프로젝트가 반복 클래스 내에서 발생하는 이벤트를 구독하게 할 수 있습니까?

답변

1

실제로는 Law of Demeter을 깨려고하고 있습니다. 그러므로 디자인을 검토해 보시기 바랍니다. 그러나 가장 간단한 옵션은 Facade 클래스에서 유사한 이벤트를 노출하거나 WalkDirectory 메서드에 대리자 매개 변수를 추가로 제공하는 것입니다.

관련 문제