我想Ninject创建绑定实现一个通用接口特定组件内的所有类型,而无需在运行指定他们。 有点像泛型如何在开放的工作Autofac。
这就是我想出了...
kernel.Bind(x => x.FromThisAssembly()
.SelectAllClasses()
.Where(t => t.IsAssignableFrom(
typeof(ICommandHandler<>)))
.BindAllInterfaces());
调用下面的方法,我希望实现所有类型的数组ICommandHandler<T>
但它产生什么... ...
public void Process<TCommand>(TCommand command)
where TCommand : ICommand
{
var handlers =
_kernel.GetAll<ICommandHandler<TCommand>>();
foreach(var handler in handlers)
{
handler.Handle(command);
}
}
有一个现有的方式来实现这一目标? 或者我需要使用的约定API推出自己的?
这似乎是一个相当普遍的模式,并想知道这是否可以不写我自己的实现来实现。