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

  • 相关阅读:
    算法导论学习 之 插入排序
    python 的模块导入
    Python 模块的发布与上传
    Python 自学笔记《1》
    linux内核可以接受的参数 | Linux kernel启动参数 | 通过grub给内核传递参数
    Linux系统安装时分区的选择(推荐)
    Oracle 11G在用EXP 导出时,空表不能导出解决
    android TextView属性详解
    android中dip、dp、px、sp和屏幕密度
    android ImageView scaleType属性
  • 原文地址:https://www.cnblogs.com/marshhu/p/7541754.html
Copyright © 2020-2023  润新知