6

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

Autofac の回答はこちら Autofac で すべての ISomething インスタンスを呼び出す

4

2 に答える 2

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");
    }
}
于 2012-10-26T13:19:56.877 に答える
0

リフレクションを使用して、インターフェイスを実装するすべてのクラスを見つけることができます: http://cocaine.co.nz/Home/High-On-Ninject-BLLModule

「主なもの」とはどういう意味ですか?- Start() メソッドを呼び出すのはどれですか?

于 2011-06-30T11:11:45.940 に答える