Внедрение зависимости, которая требует параметров для инициализации - PullRequest
0 голосов
/ 03 декабря 2011

Я использую Ninject с приложением Windows Phone.

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

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

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

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

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

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

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

Согласно ответу на этот вопрос: Ввести значение во введенную зависимость Я могу передать параметр в модуль ninject.

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

1 Ответ

1 голос
/ 04 декабря 2011

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

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

Что точно вы пытаетесь сделать?

...