Ninject解析所有接口类型

时间:2015-07-27 11:37:57

标签: c# dependency-injection ninject

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

0 个答案:

没有答案