我有一个带有 Start 方法的接口 ISomething。我想获得这个接口的所有实现(在多个程序集中,主要的和所有引用的)并在应用程序启动时调用 Start 方法。如何使用 Ninject 2.2.0.0 .NET 4.0 做到这一点?
Autofac 的答案在这里 Calling all ISomething instances in Autofac
我有一个带有 Start 方法的接口 ISomething。我想获得这个接口的所有实现(在多个程序集中,主要的和所有引用的)并在应用程序启动时调用 Start 方法。如何使用 Ninject 2.2.0.0 .NET 4.0 做到这一点?
Autofac 的答案在这里 Calling all ISomething instances in Autofac
您可以尝试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");
}
}
您可以使用反射来查找实现接口的所有类:http ://cocaine.co.nz/Home/High-On-Ninject-BLLModule
“主要”是什么意思?- 在哪一个上调用 Start() 方法?