我有参与BLL项目的Web项目。 BLL项目已经参考了DAL项目。对于依赖注入,我在Web项目中使用ninject。
在DAL项目中我有例如:
public class UnitOfWork : IUnitOfWork
{
}
用于BLL项目。
我无法在Web项目中进行注入:
Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
因为Web项目对DAL项目一无所知。 我该怎么办?
答案 0 :(得分:0)
您可以做的是创建一个名为“DependencyResolver”的附加项目。
此项目包含来自所有其他项目(BLL,DAL和其他项目)的参考。在这个项目中,您可以构建Ninject模块并定义绑定等。您的Web应用程序可以在Global.asax或任何其他启动代码中注册此项目中的模块(当然您的Web应用程序应该引用dependencyresolver项目)...您解决了Web项目需要引用DAL的问题的方法。
所以在你的新DependencyResolver项目中:
namespace DependencyResolver
{
public class MyModule : NinjectModule
{
public override void Load()
{
Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
}
}
在您的网络项目的某个地方:
var modules = new List<INinjectModule>
{
new DependencyResolver.MyModule(),
};
kernel.Load(modules);
希望您明白这一点,并且可以翻译,以便适合您的项目。