net core Autofac 替换默认的服务容器 DI,微软自动的容器 不支持命名选项的

微软默认的容器,不支持命名选项,同一接口,多个实现。 就不支持了。

配置core 支持Autofac 容器

csharp 复制代码
using Autofac;
using Autofac.Extensions.DependencyInjection;

namespace WebApplication13
{
    public interface IMyService
    {
        string GetData();
    }

    public class MyService : IMyService
    {
        public string GetData()
        {
            return "Data from MyService---MyService";
        }
    }
    public class MyService2 : IMyService
    {
        public string GetData()
        {
            return "2222 from MyService---MyService2";
        }
    }
    public class MyApplicationModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType<MyService>().As<IMyService>();
        }
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
            // 在这里添加内置DI容器的服务配置
            // 例如,
            builder.Services.AddRazorPages();
            // 使用Autofac作为服务提供商
             builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())
                   .ConfigureContainer<ContainerBuilder>(containerBuilder =>
                   {
                       // 在这里向Autofac容器注册服务  此处使用模块方式注入
                       containerBuilder.RegisterModule<MyApplicationModule>();
                   });
             Add services to the container.
            //builder.Services.AddRazorPages();
          
            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (!app.Environment.IsDevelopment())
            {
                app.UseExceptionHandler("/Error");
            }
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.MapRazorPages();

            app.Run();
        }
    }
}
autofac 支持 命名 、key


csharp 复制代码
using Autofac;
using Autofac.Extensions.DependencyInjection;

namespace WebApplication13
{
    public interface IMyService
    {
        string GetData();
    }

    public class MyService : IMyService
    {
        public string GetData()
        {
            return "Data from MyService---MyService";
        }
    }
    public class MyService2 : IMyService
    {
        public string GetData()
        {
            return "2222 from MyService---MyService2";
        }
    }
    public class MyApplicationModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType<MyService>().As<IMyService>();
            builder.RegisterType<MyService>().As<IMyService>().Named<IMyService>(typeof(MyService).Name);
            //builder.RegisterType<MyService>().As<IMyService>().Keyed<IMyService>(typeof(MyService).Name);
            builder.RegisterType<MyService2>().As<IMyService>().Named<IMyService>(nameof(MyService2));
        }
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
            // 在这里添加内置DI容器的服务配置
            // 例如,
            builder.Services.AddRazorPages();
            // 使用Autofac作为服务提供商
             builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())
                   .ConfigureContainer<ContainerBuilder>(containerBuilder =>
                   {
                       // 在这里向Autofac容器注册服务  此处使用模块方式注入
                       containerBuilder.RegisterModule<MyApplicationModule>();
                   });
             Add services to the container.
            //builder.Services.AddRazorPages();
          
            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (!app.Environment.IsDevelopment())
            {
                app.UseExceptionHandler("/Error");
            }
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.MapRazorPages();

            app.Run();
        }
    }
}
相关推荐
timer_01727 分钟前
微软将于 8 月 11 日关闭 Bing Search API 服务
microsoft
冰茶_39 分钟前
掌握LINQ:查询语法与方法语法全解析
sql·学习·microsoft·微软·c#·linq
与籍同行1 小时前
开发过程中遇到Selinux问题分析
android·selinux
韩仔搭建2 小时前
安卓端互动娱乐房卡系统调试实录:从UI到协议的万字深拆(第一章)
android·ui·娱乐
limingade3 小时前
手机打电话时如何将通话对方的声音在手机上识别成文字
android·智能手机·语音识别·funasr·蓝牙电话·ai电话机器人·funasr安卓移植和部署
努力学习的小廉3 小时前
深入了解linux系统—— 基础IO(上)
android·linux·运维
tmacfrank4 小时前
Android 性能优化入门(一)—— 数据结构优化
android·数据结构·性能优化
东风西巷4 小时前
Screen Mirroring App:轻松实现手机与电视的无缝投屏
android·智能手机·生活·软件需求
每次的天空4 小时前
Android第三次面试总结之网络篇补充
android·网络·面试
2301_7869643614 小时前
EXCEL Python 实现绘制柱状线型组合图和树状图(包含数据透视表)
python·microsoft·excel