n层架构:Web,BLL,DAL - 如何从Web到DAL进行注入?

时间:2014-06-20 06:07:32

标签: c# asp.net dependency-injection n-tier-architecture

我有参与BLL项目的Web项目。 BLL项目已经参考了DAL项目。对于依赖注入,我在Web项目中使用ninject。

在DAL项目中我有例如:

public class UnitOfWork : IUnitOfWork
{
}

用于BLL项目。

我无法在Web项目中进行注入:

Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();

因为Web项目对DAL项目一无所知。 我该怎么办?

1 个答案:

答案 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);

希望您明白这一点,并且可以翻译,以便适合您的项目。

相关问题