Как подписаться на событие внутри класса фасада

2

У меня есть два проекта 1: проект windows forms и 2: проект бизнес-логики, который рекурсивно перемещает файловую систему, ища определенные файлы.

Я хочу, чтобы проект Windows подписался на событие, захороненное в классе recurse. Проблема, которую я имею, - это экземпляр класса recurse, созданный внутри класса фасада в проекте бизнес-логики.

Окно формирует проектные вызовы бизнес-логики через фасад:

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

В проекте 2 FileAnalyzerFacade() создает экземпляр класса Recurse(). Класс Recurse() вызывает событие, когда находит файл. Поэтому форма окна ничего не знает о классе Recurse() только внешний фасад FileAnalyzerFacade().

Фасад имеет следующую подписку:

recurse.FileFound += new FilePropertyEventHandler(analyzeFile);

Когда событие запускается, выполняется функция analyFile().

Все это прекрасно, поскольку FileAnalyzerFacade() создает экземпляр класса recurse. Как я могу заставить проект windows подписаться на событие, поднятое внутри класса recurse?

Теги:
subscribe
events
facade

1 ответ

1

На самом деле, вы пытаетесь нарушить Закон Деметры здесь. Поэтому я предлагаю вам ознакомиться с вашим дизайном. Но самым простым вариантом было бы выставить подобное событие в вашем классе Facade или предоставить дополнительный параметр делегата методу WalkDirectory.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню