Autofac在mvc 3中的使用

1、直接集成

引入Autofac.dll,Autofac.Configuration.dll

 

        private void SetupResolveRules(ContainerBuilder builder)
        {
            //Components are wired to services using the As() methods on ContainerBuilder
            builder.RegisterType<SysUserMgrImp>().As<ISysUserMgr>();
            builder.RegisterType<FormsAuthServiceImp>().As<IFormsAuthService>();
        }


       protected void Application_Start()
        {
            // 依赖注入
            var builder = new ContainerBuilder();
            SetupResolveRules(builder);
            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));


            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

        }

 

使用构造函数注入

    public class SysUserController : AdminBaseController
    {
        private ISysUserMgr sysUserMgr;// = new SysUserMgrImp();

        public SysUserController(ISysUserMgr mgr)
        {
            sysUserMgr = mgr;
        }
............................


2、配置文件

引入Autofac.dll,Autofac.Configuration.dll,Autofac.Configuration.dll

 

修改web.config

    <configSections>
        <section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/>
    </configSections>

    <autofac defaultAssembly="GPS.Domain">
        <components>
            <component type="GPS.Domain.Implements.SysUserMgrImp,GPS.Domain.Implements" service="GPS.Domain.Interfaces.ISysUserMgr" />
            <component type="GPS.Domain.Implements.FormsAuthServiceImp,GPS.Domain.Implements" service="GPS.Domain.Interfaces.IFormsAuthService" >
            </component>
        </components>
    </autofac>

修改Global.asax

        protected void Application_Start()
        {
            // 依赖注入
            var builder = new ContainerBuilder();
            builder.RegisterModule(new ConfigurationSettingsReader("autofac")); 
            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            var container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));


            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }

 

使用构造函数注入

    public class AccountController : Controller
    {

        private ISysUserMgr sysUserMgr;// = new SysUserMgrImp();
        private IFormsAuthService formAuthService;// = new FormsAuthServiceImp();

        public AccountController(ISysUserMgr userMgr, IFormsAuthService formAuth)
        {
            sysUserMgr = userMgr;
            formAuthService = formAuth;
        }
........................


参考
http://code.google.com/p/autofac/wiki/Mvc3Integration
http://code.google.com/p/autofac/wiki/XmlConfiguration

相关文章:

  • 2021-09-14
  • 2021-10-20
  • 2022-12-23
  • 2021-11-27
  • 2021-08-17
  • 2021-07-17
  • 2022-12-23
  • 2022-01-28
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2018-06-04
  • 2022-12-23
  • 2021-11-28
  • 2021-06-03
  • 2021-09-15
相关资源
相似解决方案