Использование Ninject для внедрения зависимостей во внешние объекты (пользовательский контроль) - PullRequest
1 голос
/ 24 января 2010

Я хотел бы использовать Ninject в своем приложении WinForms. Я не могу понять, как использовать его для своих пользовательских элементов управления. Иногда они полагаются на сервисы, которые я хочу настроить через инфраструктуру DI. Этими элементами управления необходимо управлять с помощью конструктора (следовательно, необходимы конструкторы по умолчанию).

Итак, есть ли способ добавить зависимости в свойства этого пользовательского элемента управления? Поскольку дизайнер должен уметь его создавать, kernel.Get<TestClass> здесь не сработает. Есть ли метод или некоторый код, который позволит мне «заполнить» зависимости в методе Form_OnLoad()?

Я также могу вспомнить другие примеры, в которых я хотел бы добавить свойства уже существующего объекта, но пользовательский элемент управления WinForms проще всего объяснить.

Ответы [ 2 ]

2 голосов
/ 24 января 2010

Я думаю, вам нужно обратить ваше мышление. В Model View Controller представление имеет только одну ответственность: отображать данные.

Ответственность за то, как эти данные попадают туда, контролер и как данные представляются в памяти, определяется моделью.

Несмотря на то, что не существует конкретных сред MVC для Windows Forms, можно сделать сырые платформы вручную, или вы можете взглянуть на (сейчас вышедший на пенсию) Блок составного приложения , чтобы получить представление о том, как это может быть сделано (хотя CAB, возможно, слишком сложен для вкуса большинства людей). Сегодня доступны более элегантные варианты, но они связаны с WPF.

В любом случае, вместо внедрения ваших зависимостей в ваши представления, вставьте их в контроллеры, и пусть контроллеры будут создавать и правильно заполнять представления (ваши элементы управления).

Таким образом, вы можете избавить свои контроллеры от проблем DI, как и должно быть.

1 голос
/ 26 мая 2011

Мне кажется, вопрос в том, какой инструмент DI вы можете использовать, чтобы получить внедрение зависимостей для работы с формами Windows.Каждый делает пример MVC, потому что его легко реализовать (тот же самый пример, если плавать вокруг мы, как если бы он был новым и оригинальным).Если у вас есть ответ, чтобы сделать это с помощью winforms или даже WPF - это было бы полезно.

Этот ответ здесь в основном гласит - в любом случае, я не знаю, так что вставлять их в контроллеры и заполнять представления - правда?Вернуться к MVC?Опять же - winforms.

...