メソッド Start を持つインターフェイス ISomething があります。このインターフェイスのすべての実装 (複数のアセンブリ、メイン アセンブリとすべての参照アセンブリ) を取得し、アプリケーションの開始時に Start メソッドを呼び出したいと考えています。Ninject 2.2.0.0 .NET 4.0 でこれを行うにはどうすればよいですか?
Autofac の回答はこちら Autofac で すべての ISomething インスタンスを呼び出す
メソッド Start を持つインターフェイス ISomething があります。このインターフェイスのすべての実装 (複数のアセンブリ、メイン アセンブリとすべての参照アセンブリ) を取得し、アプリケーションの開始時に Start メソッドを呼び出したいと考えています。Ninject 2.2.0.0 .NET 4.0 でこれを行うにはどうすればよいですか?
Autofac の回答はこちら Autofac で すべての ISomething インスタンスを呼び出す
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() メソッドを呼び出すのはどれですか?