Ninject связывает все фабричные интерфейсы

Есть ли простой способ использовать 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();

Что бы я делал, если бы у меня было 10 или 20 интерфейсов IFactory, которые требовали привязки?

1 ответ

Решение

Да, используйте соглашения: https://github.com/ninject/ninject.extensions.conventions

this.Bind(x => x.From_UseSomeOverloadToSpecifyTheAssemblies()
                .SelectAllInterfaces().EndingWith("Factory")
                .BindToFactory();
Другие вопросы по тегам