2011-01-12 19 views
7

ile bağlamaların otomatikleştirilmesi için hangi seçeneklere sahip olursam Her sınıfı el ile bağlamak zorunda kalmadan, otomatik olarak bağlamaları kurmak için hangi yöntem ve kalıplar önerilir?NInject

Örneğin, ciltleri büyük çoğunluğu yalnızca şuna benzer: modüller büyük olsun

Bind<ICustomerRepository>.To<CustomerRepository>(); 

sonra, tüm tamamen aynı görünüyor bağlamaları 100'ler ile sona erebilir. Bu otomatik olabilir mi? konvansiyonlar uzantısı üzerinden

cevap

7

kontrol: https://github.com/ninject/ninject.extensions.conventions

 using (IKernel kernel = new StandardKernel()) 
     { 
      var scanner = new AssemblyScanner(); 
      scanner.From(Assembly.GetExecutingAssembly()); 
      scanner.BindWith<DefaultBindingGenerator>(); 
      kernel.Scan(scanner); 
      var instance = kernel.Get<IDefaultConvention>(); 

      instance.ShouldNotBeNull(); 
      instance.ShouldBeInstanceOf<DefaultConvention>(); 
     } 
+0

biraz daha o ne yaptığını açıklayabilir misin? – Jon

+1

, bu projede, toplantılarınızı tarayacak ve Sözleşmelere bağlı olarak Ninject'te bağlama oluşturacak birkaç farklı BindingGenerator var. Bu örnekte kullanılan DefaultBindingGenerator, somut bir örnek olarak "I" ile aynı ada sahip arabirimleri arar. Örneğin, yukarıdaki IDefaultConvention, DefaultConvention'a bağlı. Ayrıca, bağlayıcılar için kurallar belirtmek istiyorsanız ve bir türevi genel argümanları otomatik olarak yerine getirmeye çalışmak için bir GenericBindingGenerator ise bir RegexBindingGenerator vardır. –