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();