Winforms MVP с замком Виндзор - DI для подчиненных? - PullRequest
2 голосов
/ 15 апреля 2010

Я создаю приложение winforms, использующее пассивный просмотр MVP и Castle Windsor в качестве контейнера IoC. Я все еще немного новичок в внедрении зависимостей и MVP, поэтому я ищу некоторую ясность ...

У меня есть основная форма, которая содержит ряд пользовательских элементов управления, а также при необходимости будет вызывать другие диалоги (например, Логин, параметры и т. Д.) Мой первый вопрос ... должен ли я использовать инжектор конструктора, чтобы получить презентаторы для этих других представлений в главном представлении, или я должен вернуться к шаблону типа локатора служб? (что мне сказали, это большой ноно!) Или что-то еще?

Второй вопрос ... пользовательские элементы управления должны возвращаться к главной форме, когда они "завершены" (определение этого состояния зависит от элемента управления). Есть ли стандартный способ их подключения? Я подумала, может быть, просто проводя мероприятия между главным докладчиком и детьми-докладчиками, но я не уверена, что это правильное мышление.

Буду признателен за любую помощь, похоже, что комбинация MVP и IoC в winforms не совсем хорошо документирована.

1 Ответ

2 голосов
/ 17 апреля 2010

Позвольте мне начать с того, что я не писал WinForms довольно долгое время, поэтому я могу быть не совсем точным.

Если вы используете пассивное представление, ваши представления не должны иметь зависимостей, поэтому вам не нужно ничего вводить в них. Presenter должен создаваться контейнером, а IView вводится в него через .ctor. Вообще избегайте Service Locator - В этом посте описаны некоторые мощные альтернативы.

Для обратной связи я бы использовал какой-нибудь мостовой интерфейс, который бы вводился в докладчика. Здесь я расплывчат, потому что детали зависят от специфики вашего сценария и от того, как именно вы решили разделить свою логику.

Как правило, не слишком сосредотачивайтесь на контейнере IoC - это просто инструмент, который выполнит за вас некоторую (большую) часть работы, но это не волшебная палочка - вы должны быть в состоянии сделать то же самое без контейнера на месте, поэтому, если это отвлекает ваш фокус, не стесняйтесь удалять его с картинки при создании прототипа.

...