zoukankan      html  css  js  c++  java
  • Autofac依赖注入框架

    最近使用Autofac框架做项目的依赖注入,感觉挺好用的。

    没有深入研究,只是拿来用用,具体可以去官网看看:https://autofac.org/。

    这里只是贴一下最近项目的配置:

    public partial class Startup
        {
            public void ConfigureContainer(IAppBuilder app)
            {
                var builder = new ContainerBuilder();
    
                // You can register controllers all at once using assembly scanning...
                builder.RegisterControllers(typeof(MvcApplication).Assembly);
    
                // Get your HttpConfiguration.
                var config = GlobalConfiguration.Configuration;
    
                // Register your Web API controllers.
                builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
    
                // OPTIONAL: Register the Autofac filter provider.
                builder.RegisterWebApiFilterProvider(config);
    
                // OPTIONAL: Register the Autofac model binder provider.
                builder.RegisterWebApiModelBinderProvider();
    
                // ...or you can register individual controlllers manually.
                //builder.RegisterType<HomeController>().InstancePerRequest();
    
                builder.RegisterModule<AutofacWebTypesModule>();//Register Web Abstractions
    
                builder.RegisterSource(new ViewRegistrationSource());//Enable Property Injection for View Pages
    
                builder.RegisterFilterProvider();//Enable Property Injection for Action Filters
    
                builder.RegisterType<EFDbContext>().As<IDbContext>().InstancePerRequest();
                builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope();
                builder.RegisterType<MemoryCacheManager>().As<ICacheManager>().InstancePerRequest();
                #region  Service
                builder.RegisterType<SysUserService>().As<ISysUserService>().InstancePerLifetimeScope();
                //注册各种服务
                
                #endregion
                var container = builder.Build();
                DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    
                config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
    
                RuntimeContext.Instance.ContainerManager = new ContainerManager(container);//存储到全局实例中
                // OWIN MVC SETUP:
    
                // Register the Autofac middleware FIRST, then the Autofac MVC middleware.
                app.UseAutofacMiddleware(container);
                app.UseAutofacMvc();
            }
        }

    项目是基于MVC的,利用Startup的partialt特性,加了上面依赖注入配置方法ConfigureContainer,然后可以在MVC的Startup类的Configuration方法中调用该方法,如下:

     public void Configuration(IAppBuilder app)
     {
       ConfigureContainer(app);
     }

    OK,依赖注入搞定了.

  • 相关阅读:
    344.反正字符串
    125.验证回文串
    167.两数之和 II
    278.第一个错误的版本
    缓冲流
    Windows10剪贴板不能用
    chapter_21【字节流、字符流】
    属性集
    IO异常的处理
    字符流
  • 原文地址:https://www.cnblogs.com/marshhu/p/7541754.html
Copyright © 2011-2022 走看看