我有一個接口ISomething方法Start。我想要獲得該接口的所有實現(在多個程序集中,主程序和所有引用的程序集),並在應用程序啓動時調用Start方法。我如何使用Ninject 2.2.0.0 .NET 4.0做到這一點?調用Ninject中的所有ISomething實例
Autofac答案在這裏 Calling all ISomething instances in Autofac
我有一個接口ISomething方法Start。我想要獲得該接口的所有實現(在多個程序集中,主程序和所有引用的程序集),並在應用程序啓動時調用Start方法。我如何使用Ninject 2.2.0.0 .NET 4.0做到這一點?調用Ninject中的所有ISomething實例
Autofac答案在這裏 Calling all ISomething instances in Autofac
你可以使用反射來找到實現該接口(S)的所有類:http://cocaine.co.nz/Home/High-On-Ninject-BLLModule
你所說的「主一」是什麼意思? - 調用哪個Start()方法?
您可以嘗試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");
}
}