public SelectUserQuery: IQuery{
public string Command {
get{ return "...."; }
}
}
public class QueryDispatcher : IQueryDispatcher
{
//...
//..
public void Dispatch<TQuery>(TQuery query) where TQuery : IQuery
{
foreach (var handler in kernel.ResolveAll<IQueryHandler<TQuery>>())
{
handler.Handle(query);
}
}
}
public class QueryManager{
//...
public Activate(){
queryDispatcher.Dispatch(new SelectUserQuery());
}
}
这解析了我使用queryDispatcher.Dispatch(new SelectUserQuery());
但我在QueryManager中创建一个私有方法来运行像这样的Dispatch操作:
public class QueryManager{
//...
public SeletectUser(){
Apply(new SelectUserQuery());
}
private Apply(IQuery query){
queryDispatcher.Dispatch(query);
}
}
这不起作用。 kernel.ResolveAll<IQueryHandler<TQuery>>()
正在返回空集合。
绑定是这样的:
public class ServiceModule: NinjectModule
{
public override void Load()
{
Kernel.Bind<IQueryHandler<SelectUserQuery>>().To<SelectUserQueryHandler>();
Kernel.Bind<IQueryDispatcher>().To<QueryDispatcher>();
}
}