4

Ninjectを使用してすべてのFactoryインターフェイスをToFactory()拡張メソッドにバインドする簡単な方法はありますか?

public class Foo
{
    readonly IBarFactory barFactory;

    public Foo(IBarFactory barFactory)
    {
        this.barFactory = barFactory;
    }

    public void Do()
    {
        var bar = this.barFactory.CreateBar();
        ...
    }
}

public interface IBarFactory
{
    Bar CreateBar();
}

上記のコードでは、次を使用できます。

kernel.Bind<IBarFactory>().ToFactory();

バインディングが必要なIFactoryインターフェイスが10個または20個ある場合はどうすればよいですか?

4

1 に答える 1

6

はい、慣例を使用します:https ://github.com/ninject/ninject.extensions.conventions

this.Bind(x => x.From_UseSomeOverloadToSpecifyTheAssemblies()
                .SelectAllInterfaces().EndingWith("Factory")
                .BindToFactory();
于 2012-06-08T00:21:27.533 に答える