Существует два основных способа работы с IoC: внедрение зависимостей (DI) и расположение службы (SL).Имея дело с внедрением зависимостей, вы предоставляете свои зависимости извне ваших классов.Как правило, вы делаете это путем внедрения (передачи) ваших зависимостей в конструктор класса или с помощью установщиков.Например:
public class SomeClass {
public ISomeDependency SomeDependency {get;set;}
public SomeClass(ISomeOtherDependecy someOtherDependency) {
//...
}
}
В этом случае вы МОЖЕТЕ предоставить реализацию ISomeDependency через свойство и СЛЕДУЕТ предоставить реализацию ISomeOtherDependecy через конструктор.Поддержка Ninject в обоих направлениях.
Другой способ выполнения (SL) позволяет запрашивать ваши зависимости в нужный момент, например:
public void DoSomeAction() {
ISomeDependency someDependency = MyServiceLocatorImpl.GetInstance<ISomeDependence>()
}
Если вы планируете использоватьПодход SL (или гибридный), вы можете использовать Common Service Locator (для Ninject есть поддержка ).Это облегчает переключение нашего механизма IoC позже.