2011-03-17 12 views
6

में सभी समसामयिक उदाहरणों को कॉल करना मेरे पास एक विधि प्रारंभ के साथ एक इंटरफ़ेस ISOMething है। मैं इस इंटरफेस के सभी कार्यान्वयन (कई असेंबली, मुख्य एक और सभी संदर्भित लोगों में) प्राप्त करना चाहता हूं और एप्लिकेशन प्रारंभ पर स्टार्ट विधि को कॉल करना चाहता हूं। मैं निंजा 2.2.0.0 .NET 4.0 के साथ ऐसा कैसे कर सकता हूं? http://cocaine.co.nz/Home/High-On-Ninject-BLLModuleनिनजेक

क्या आप "मुख्य एक" मतलब है:

Autofac जवाब यहाँ Calling all ISomething instances in Autofac

उत्तर

0

आप प्रतिबिंब इस्तेमाल कर सकते हैं सभी वर्गों कि इंटरफेस (रों) लागू खोजने के लिए था? - स्टार्ट() विधि को किस पर कॉल करें?

10

आप Ninject.Extensions.Conventions कोशिश कर सकते हैं:

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

// and later: 

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

आवश्यक वर्गों में नीचे हैं:

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"); 
    } 
} 
संबंधित मुद्दे