Her iki örüntü de kontrolün ters çevrilmesi ilkesinin bir uygulaması gibi görünmektedir. Yani, bir nesne bağımlılıklarını nasıl oluşturacağını bilmemelidir.
Bağımlılık Enjeksiyonu (DI) bağımlılıkları "enjekte etmek" için bir yapıcı veya ayarlayıcı kullanıyor gibi görünmektedir.
Yapıcı Enjeksiyonu kullanma örneği:
//Foo Needs an IBar
public class Foo
{
private IBar bar;
public Foo(IBar bar)
{
this.bar = bar;
}
//...
}
Servis Bulucu, bağımlılıklarını bağlayan ve ona bar veren bir "kap" kullanıyor gibi görünüyor.
Servis Bulucu kullanımına örnek:
//Foo Needs an IBar
public class Foo
{
private IBar bar;
public Foo()
{
this.bar = Container.Get<IBar>();
}
//...
}
Bağımlılıklarımız sadece nesnelerin kendileri olduğundan, bu bağımlılıkların, daha da fazla bağımlılığa sahip olan bağımlılıkları vardır, vb. Böylece, Kontrol Kapsayıcısının (veya DI Kapsayıcısının Tersi) doğmuştur. Örnekler: Windsor Kalesi, Ninject, Yapı Haritası, Bahar vb.)
Ancak bir IOC / DI Kapsayıcısı tam olarak bir Hizmet Bulucuya benziyor . Buna DI Konteyner kötü bir isim mi diyor? IOC / DI Kapsayıcısı başka bir tür Servis Bulucu mu? Nüans DI Konteynerleri daha çok Bağımlılığımız olduğunda kullanıyor mudur?