2
我希望Ninject为实现通用接口的特定程序集内的所有类型创建绑定,而无需在运行时将它们全部指定。有点像Autofac中开放泛型的工作原理。在Ninject 3.0中绑定泛型类型
这就是我想出了...
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推出自己的产品?
这似乎是一个相当普遍的模式,并想知道如果这可以实现而不写我自己的实现。
轻微错字,应该是 - kernel.Bind(X => x.FromThisAssembly() .SelectAllClasses()InheritedFrom(typeof运算(ICommandHandler <>))BindAllInterfaces())。但是,嘿,我仍然感谢一下。谢谢 :) – Baldy 2012-07-30 08:53:29