我是自动依赖注入的新手,并尝试使用MVC4应用程序干净地实现Ninject。一切都很实用,但我的强迫症想知道应用程序如何在NinjectWebCommon.cs中的RegisterServices(IKernel内核)方法中列出绑定。例如,
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IAbstractManagerA>().To<ConcreteManagerA>();
kernel.Bind<IAbstractManagerB>().To<ConcreteManagerB>();
kernel.Bind<IAbstractRepoA>().To<ConcreteRepoA>();
...etc etc could be hundreds
}
有没有更好的方法来解决这个问题?也许将每个配对作为web.config设置或其他配置文件?基本上为依赖注入注入依赖项:)
答案 0 :(得分:5)
考虑围绕一些明确定义的通用抽象来设计应用程序,例如:
IRepository<TEntity>
隐藏数据库CRUD操作ICommandHandler<TCommand>
定义您的系统业务操作/用例(example)。IQueryHandler<TQuery, TResult>
定义可供业务逻辑使用的自定义查询(example)。IValidator<T>
作为可以验证实体或命令的类的抽象(example)。将这种类型的设计应用为一些明显的好处: