Autofacl自动化注册

1.自动注入MVC控制器

   (1)初始化自动化注册服务 RegisterService

    需引用:Autofac,Autofac.Integration.Mvc 这两个程序集

 1 public class RegisterService
 2     {
 3         public static ContainerBuilder Register()
 4         {
 5             var builder = new ContainerBuilder();
 6             var baseType = typeof(IDependency);
 7             var assemblys = AppDomain.CurrentDomain.GetAssemblies().ToList();
 8             var allServices = assemblys.SelectMany(s => s.GetTypes())
 9                 .Where(p => baseType.IsAssignableFrom(p) && p != baseType);
10 
11             builder.RegisterControllers(assemblys.ToArray());
12 
13             builder.RegisterAssemblyTypes(assemblys.ToArray()).Where(t => baseType.IsAssignableFrom(t) && t != baseType)
14                 .AsImplementedInterfaces().InstancePerLifetimeScope();
15             
16             builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>)).InstancePerDependency();
17             return builder;
18         }
19     }
View Code

   (2) Global中启动该服务

     var builder = RegisterService.Register();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build()));

2.手动指定注入的实例类型

         var builder = new ContainerBuilder();

         builder.RegisterType<DBBase>();

         builder.RegisterType<SqlRepository>().As<IRepository>();

3. 通过Autofac文档中 通过 WebConfig配置实现自动化注入

 Autofac自带了一个Autofac.Configuration.dll 非常方便地对类型进行配置,避免了程序的重新编译。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/>
  </configSections>
  <autofac defaultAssembly="AutofacDemo">
    <components>
      <component type="AutofacDemo.Service, AutofacDemo" service="AutofacDemo.IService,AutofacDemo" />
    </components>
  </autofac>
</configuration>
配置文件

  使用案例:

var builder = new ContainerBuilder(); 
builder.RegisterType<DatabaseManager>(); 
builder.RegisterModule(new ConfigurationSettingsReader("autofac")); 
using (var container = builder.Build()) 
{ 
    var manager = container.Resolve<DatabaseManager>(); 
    manager.Search("TestA"); 
} 
View Code

 

        

转载于:https://www.cnblogs.com/wlxFighting/articles/5046963.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值