0

Я использую Ninject с приложением Windows Phone.Инъекция зависимости, которая требует параметров для инициализации

Моя логика включает в себя интерфейс IBarViewModel, который:

public interface IBarViewModel 
    { 
     double Width { get; set; } 
     bool IsAchieved { get; set; } 
     CornerRadius Corner { get; set; } 
    } 

В настоящее время существует только один implementatation из IBarViewModel - GenericBarViewModel.

Все реализаторы IViewModel должны будут иметь эти три основных свойства, установленные во время создания.

Я хочу создать экземпляры этих IBarViewModels во время выполнения из моего кода. Как мне это сделать.

Когда я программировал против реализации (класс был назван просто Bar), я просто звоню инициализатор объекта, как это:

_bars.Add(new Bar 
       { 
        Width = _totalWidth, 
        IsAchieved = false, 
        Corner = new CornerRadius(5, 5, 5, 5) 
       }); 

В соответствии с ответом на этот вопрос: Inject value into injected dependency я могу передать параметр для модуля ninject.

Осталось только вопрос: Должен ли я перенести свое ядро ​​ninject в логику, чтобы сделать такое параметризованное разрешение зависимостей?

+0

См. [Здесь] (http://stackoverflow.com/questions/2227548/creating-an-instance-using-ninject-with-additional-parameters-in-the-constructor). Просто попросите свой класс принять эти параметры в конструкторе и проинструктировать ninject, какие значения должны быть предоставлены. –

ответ

1

Я не думаю, что вы должны использовать IoC вообще для этого. Это не имеет никакого смысла.

Почему бы просто не задать GenericBarViewModel значения по умолчанию для трех свойств, сделать их абстрактными и разрешить любые другие реализаторы ViewModel «Bar» наследовать от GenericBarViewModel?

точно Вы пытаетесь это сделать?

+0

Клаус, это именно то, что я сделал вчера. Спасибо. –

Смежные вопросы