SORU
13 Ocak 2010, ÇARŞAMBA


Ninject modülleri niyeti nedir?

Nİnject için tam bir acemi değilim

Başkasının kodunu çekmek dışında bulundum ve nİnject modülleri birkaç örneği - Ninject türetilen sınıflar buldu.Modüller.Modülü, ve onların çoğu kodu içeren bir yükleme yöntemi var.

Bu sınıflar StandardKernel örneği LoadModule yöntemi çağırma ve modül sınıfının bir örneğini geçerek denir.

Belki burada bariz olan bir şeyi kaçırıyorum ama ne sadece eski bir sınıf oluşturma ve yöntemi, ya da belki bir statik yöntemi ile statik bir sınıf çağırıyor bunun yararı nedir?

CEVAP
13 Ocak 2010, ÇARŞAMBA


Ninject modülleri araçları IoC konteyneri ile çeşitli kaydetmek için kullanılır. Avantaj, bu modüllerin daha sonra kendi sınıflarında tutulur. Bu senin kendi modüllerde farklı katman/hizmetleri vermesini sağlar.

// some method early in your app's life cycle
public Kernel BuildKernel()
{
    var modules = new INinjectModule[] 
    {
        new LinqToSqlDataContextModule(), // just my L2S binding
        new WebModule(),
        new EventRegistrationModule()
    };
    return new StandardKernel(modules);
}

// in LinqToSqlDataContextModule.cs
public class LinqToSqlDataContextModule : NinjectModule
{
    public override void Load()
    {
        Bind<IRepository>().To<LinqToSqlRepository>();
    }
}

Birden çok modülü olması bile IoC konteyner içinde endişeleri ayrılması için izin verir.

Geri kalanlar soru bir bütün olarak IoC ve DI hakkında daha fazla, ve sadece Ninject değil gibi geliyor. Evet, statik Yapılandırma nesneleri IoC konteynerine yaptığı her şeyi yapmak için kullanabilirsiniz. IoC konteyner bağımlılıkları birden çok hiyerarşileri varsa çok güzel olur.

public interface IInterfaceA {}
public interface IInterfaceB {}
public interface IInterfaceC {}

public class ClassA : IInterfaceA {}

public class ClassB : IInterfaceB
{
    public ClassB(IInterfaceA a){}
}

public class ClassC : IInterfaceC
{
    public ClassC(IInterfaceB b){}
}

ClassC bina arayüzler birden fazla derinlikleri ile bu noktada bir ağrı. Çok daha kolay sadece bir İİnterfaceC için çekirdek istemek için.

var newc = ApplicationScope.Kernel.Get<IInterfaceC>();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Evan Coury

    Evan Coury

    29 NİSAN 2007
  • FD2097

    FD2097

    21 HAZİRAN 2009
  • pilslajt

    pilslajt

    20 HAZİRAN 2008