IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> .Net6获取Autofac注入的服务 -> 正文阅读

[开发工具].Net6获取Autofac注入的服务

Program.cs 配置:

using Autofac;
using Autofac.Extensions.DependencyInjection;
using System.Reflection;
using WebApplication3;

var builder = WebApplication.CreateBuilder(args);

// 1.将默认ServiceProviderFactory指定为AutofacServiceProviderFactory
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
{
    // 2.自动注册
    Assembly assembly = Assembly.Load("Jasper.Application.Base");
    builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces().InstancePerDependency();
});


// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// 3.获取Autofac注入的实例
IocManager.Instance.Container = app.UseHostFiltering().ApplicationServices.GetAutofacRoot();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();

app.MapControllers();

app.Run();

Autofac帮助类:

using Autofac;
using Autofac.Core;

namespace WebApplication3
{
    /// <summary>
    /// Autofac帮助类
    /// </summary>
    public class IocManager
    {
        public static IocManager Instance = new IocManager();

        public ILifetimeScope Container { get; set; }

        public T GetService<T>()
        {
            return ResolutionExtensions.Resolve<T>((IComponentContext)(object)this.Container);
        }

        public T GetService<T>(string serviceKey)
        {
            return ResolutionExtensions.ResolveKeyed<T>((IComponentContext)(object)this.Container, (object)serviceKey);
        }

        public T GetService<T>(string serviceKey, params Parameter[] parameters)
        {
            return ResolutionExtensions.ResolveKeyed<T>((IComponentContext)(object)this.Container, (object)serviceKey, parameters);
        }

        public object GetService(Type serviceType)
        {
            return ResolutionExtensions.Resolve((IComponentContext)(object)this.Container, serviceType);
        }

        public object GetService(string serviceKey, Type serviceType)
        {
            return ResolutionExtensions.ResolveKeyed((IComponentContext)(object)this.Container, (object)serviceKey, serviceType);
        }

        public bool IsRegistered<T>()
        {
            return ResolutionExtensions.IsRegistered<T>((IComponentContext)(object)this.Container);
        }

        public bool IsRegistered<T>(string serviceKey)
        {
            return ResolutionExtensions.IsRegisteredWithKey<T>((IComponentContext)(object)this.Container, (object)serviceKey);
        }

        public bool IsRegistered(Type serviceType)
        {
            return ResolutionExtensions.IsRegistered((IComponentContext)(object)this.Container, serviceType);
        }

        public bool IsRegisteredWithKey(string serviceKey, Type serviceType)
        {
            return ResolutionExtensions.IsRegisteredWithKey((IComponentContext)(object)this.Container, (object)serviceKey, serviceType);
        }
    }
}

使用:

var testIoc = IocManager.Instance.GetService<T>();

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:50:46  更:2022-02-26 11:50:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:41:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码