Зависимость внедрения практической информации? - PullRequest
2 голосов
/ 13 февраля 2011

У меня проблемы с пониманием практических сторон концепции внедрения зависимости с использованием контейнера IoC. У меня не было проблем с внедрением зависимостей в классах IController с использованием ControllerFactory. Это пример по умолчанию в большинстве контейнеров IoC.

Но что теперь? Это просто вопрос использования IFoo bar = Container.Resolve<IFoo>; везде в коде вместо IFoo bar = new Foo();?

Обновление: Согласно gor это не очень хорошая идея. Зависимости следует вводить с помощью конструктора.

Но что это означает на практике?

interface IFoo {
    IDependent dependency;
}

class Foo : IFoo {
    public Foo(IDependent dependency) {
        this.dependency = dependency;
    }
}

Я могу только представить, как это сделать?!?

IFoo bar = new Foo(dependencyInstance);

1 Ответ

2 голосов
/ 13 февраля 2011

Писать везде в вашем коде IFoo bar = Container.Resolve<IFoo> не очень хорошая идея. Это шаблон службы . Идея DI убрать зависимости от ваших классов. Лучший способ - взять и представить их в конструкторах вашего класса. И запрос от Container только корневого класса. Другие зависимости должны быть разрешены автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...