我对DI / IoC概念很陌生,并希望在3层ASP.NET Webforms应用程序中使用Autofac。
我问了一个更一般的问题here。基本上,我想在我的DAL中为每个HttpContext创建一个obejctcontext。但我不想在UI中添加对DAL的引用或直接在DAL中访问HttpContext。我想这就是IoC工具的用武之地。我之前的问题的答案是使用温莎城堡的一个很好的例子。我想使用Autofac作为我的IoC工具,不知道如何实现这一点。 (如何在application_start中访问DAL以注册组件,而我不想在我的UI中引用它,能够在BLL中使用DAL组件与Autofac的正确引用是什么,我应该使用Autofac注册BLL作为组件也是)
很抱歉没有提供明确的问题并要求提供一些工作示例,但我对整个IoC概念非常不熟悉,我认为我无法在目前的时间限制项目中使用它。
答案 0 :(得分:6)
Autofac模块是您正在寻找的技术:http://code.google.com/p/autofac/wiki/StructuringWithModules
模块组相关配置,例如您的DAL类型,可以通过Web.config加载到应用程序中:http://code.google.com/p/autofac/wiki/XmlConfiguration#Modules
这样可以避免在您的网络应用和DAL之间进行任何硬性引用。
如果您想按请求注册DAL组件,请使用InstancePerLifetimeScope()
共享修改器。这将与InstancePerHttpRequest()
的工作方式相同,除非您在应用中自定义生命周期层次结构(不太可能。)
祝你好运!
尼克