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,依赖注入搞定了.

  • 相关阅读:
    Tensorflow中张量的数学运算
    TensorFlow2.0中tf.concat和tf.stack的区别
    机器学习之K-Means(聚类分析)
    机器学习之线性回归
    机器学习之随机森林
    机器学习之决策树
    python爬取FTP文件,并批量下载到本地。
    ATOM系列之-atom报错"Cannot load the system dictionary for zh-CN"
    开机出现loading (hd0)/ntldr。。。
    如何制作一张符合上传的照片
  • 原文地址:https://www.cnblogs.com/marshhu/p/7541754.html
Copyright © 2011-2022 走看看