Ninrt

2011-03-17 13 views
6

'daki tüm ISomething örneklerini arama Bir arabirim var Start yöntemi olan bir şey var. Bu arabirimin tüm uygulamalarını (birden çok derlemede, ana başvuruda ve tüm başvurulanlarda) almak ve uygulama başlangıcında Başlat yöntemini çağırmak istiyorum. Bunu, Ninject 2.2.0.0 .NET 4.0 ile nasıl yapabilirim? http://cocaine.co.nz/Home/High-On-Ninject-BLLModuleNinrt

siz "ana biri" ne demek istiyorsunuz:

Autofac cevap burada Calling all ISomething instances in Autofac

cevap

0

Sen arayüz (ler) uygulamak tüm sınıfları bulmak için yansıma kullanabilirsiniz oldu? - hangisinde Start() yöntemini çağırınız?

10

Sen Ninject.Extensions.Conventions deneyebilirsiniz:

var kernel = new StandardKernel(); 
kernel.Bind(c => 
      c.FromThisAssembly() 
       .SelectAllClasses().InheritedFrom<IFoo>() 
       .BindAllInterfaces()); 

// and later: 

kernel.GetAll<IFoo>().ToList().ForEach(foo => foo.DoSmth()); 

Gerekli sınıfları aşağıdaki gibidir:

public interface IFoo 
{ 
    void DoSmth(); 
} 

public class Foo1 : IFoo 
{ 
    public void DoSmth() 
    { 
     Console.Out.WriteLine("Foo1"); 
    } 
} 

public class Foo2 : IFoo 
{ 
    public void DoSmth() 
    { 
     Console.Out.WriteLine("Foo2"); 
    } 
}