• Autofac 中间件使用


    0-添加 Autofac.Extensions.DependencyInjection 引用

    1-NetCore 2.x 依赖注入模式

     1 # 返回类型 改成  IServiceProvider
     2 public IServiceProvider ConfigureServices(IServiceCollection services)
     3  {
     4 var builder = new ContainerBuilder();
     5             builder.Populate(services);
     6             builder.RegisterAssemblyTypes(Assembly.Load("GR.Interfaces"), Assembly.Load("GR.Services"))
     7               .AsSelf()
     8               .AsImplementedInterfaces()
     9               .InstancePerLifetimeScope()
    10               .PropertiesAutowired();
    11 
    12             var Container = builder.Build();
    13             return new AutofacServiceProvider(Container);
    14  }
    View Code

    2-NetCore 3.x 依赖注入模式

    2.1-Program 中添加 UseServiceProviderFactory(new AutofacServiceProviderFactory())

    1  public static IHostBuilder CreateHostBuilder(string[] args) =>
    2             Host.CreateDefaultBuilder(args)
    3                 .UseServiceProviderFactory(new AutofacServiceProviderFactory())//添加这行代码
    4                 .ConfigureWebHostDefaults(webBuilder =>
    5                 {
    6                     webBuilder.UseStartup<Startup>();
    7                 });
    View Code

    2.2-Startup 中添加方法 ConfigureContainer(ContainerBuilder builder)

     1 public void ConfigureContainer(ContainerBuilder builder)
     2         {
     3             ////过滤器注册
     4             //builder.RegisterAssemblyTypes(Assembly.Load("IoC.Web"))
     5             //     .Where(t => t.BaseType.FullName.Contains("Filter"))
     6             //     .AsSelf();
     7             //
     8 
     9             builder.RegisterAssemblyTypes(Assembly.Load("IoC.Application"),
    10                 Assembly.Load("IoC.Domain"))
    11                  .Where(x => typeof(IScopedDenpency).IsAssignableFrom(x) && !x.IsAbstract)
    12                 .AsSelf()
    13                 .AsImplementedInterfaces()
    14                 .InstancePerLifetimeScope()
    15                 .PropertiesAutowired();
    16 
    17             builder.RegisterAssemblyTypes(Assembly.Load("IoC.Application"),
    18                 Assembly.Load("IoC.Domain"))
    19             .Where(x => typeof(ISingletonDenpency).IsAssignableFrom(x) && !x.IsAbstract)
    20               .AsSelf()
    21               .AsImplementedInterfaces()
    22               .SingleInstance()
    23               .PropertiesAutowired();
    24 
    25 
    26             builder.RegisterAssemblyTypes(Assembly.Load("IoC.Application"),
    27                 Assembly.Load("IoC.Domain"))
    28               .Where(x => typeof(ITraintDenpency).IsAssignableFrom(x) && !x.IsAbstract)
    29               .AsSelf()
    30               .AsImplementedInterfaces()
    31               .InstancePerDependency()
    32               .PropertiesAutowired();
    33 
    34             //builder.RegisterAssemblyTypes(Assembly.Load("IoC.Application"), Assembly.Load("IoC.Domain"))
    35             //  .AsSelf()
    36             //  .AsImplementedInterfaces()
    37             //  .InstancePerLifetimeScope()
    38             //  .PropertiesAutowired();
    39         }
    View Code
  • 相关阅读:
    VS2005 新控件之 容器 《PlaceHolder》
    vs2005/.NET2.0 控件演示之 超级链接 《HyperLink》
    VS2005 控件演示之 容器《Panel》
    投票系统[单/复选,投票数量/项随意][C#/SQL/文件包括数据库代码全部在]
    datalgrid\datalist\repeater\的用法以及相关小技巧
    使用XmlDocument类完成对XML的查、删、添、改(不完美,望指教)
    Repeater读取数据并分页
    vs2005控件演示之 MultiView
    datagrid 分页及隐藏指定列再以及鼠标动作(换背景)
    VS2.0控件之日历《Calendar》C#
  • 原文地址:https://www.cnblogs.com/ganqiyin/p/13204085.html
Copyright © 2020-2023  润新知