zoukankan      html  css  js  c++  java
  • aspnetcore DI 多实例注入及获取

    废话不说,直接代码

    //注入  按单例模式注入RabbitMQ的ConnectionFactory
    {
        var mqCfg = context.Configuration.GetSection("RabbitMQ").Get<RabbitMQCfg>();
        var cf = new ConnectionFactory()
        {
            HostName = mqCfg.HostName,
            Port = mqCfg.Port,
    
            UserName = mqCfg.UserName,
            Password = mqCfg.Password,
    
            VirtualHost = mqCfg.VirtualHost,
        };
    
        RabbitMQTools.Init(cf);
    
        services.AddSingleton(cf);
    }
    {
        var mqCfg = context.Configuration.GetSection("RabbitMQLogger").Get<MyRabbitMQLoggerProviderOptions>();
        var cf = new ConnectionFactory()
        {
            HostName = mqCfg.HostName,
            Port = mqCfg.Port,
    
            UserName = mqCfg.UserName,
            Password = mqCfg.Password,
    
            VirtualHost = mqCfg.VirtualHost,
        };
    
        RabbitMQTools.Init(cf);
    
        services.AddSingleton(cf);
    }

    获取方式也很简单,主要有两种

    1.构造中接收

    /// <summary></summary>
    public TimedBackgroundService(IEnumerable<ConnectionFactory> svs)
    {
    
    }

    2.GetServices接收

    using (var sp = logbuild.Services.BuildServiceProvider())
    {
        var mqFact2 = sp.GetServices<ConnectionFactory>();
        var mqFact = mqFact2.First(d => d.VirtualHost.EqualIgnoreCase("log"));
        var option = sp.GetService<IConfiguration>().GetSection("RabbitMQLogger").Get<MyRabbitMQLoggerProviderOptions>();
    
        logbuild.AddMyRabbitMQLog(mqFact, option);
    }

    还可以使用AspectCore的属性注入接收

    [AspectCore.DependencyInjection.FromServiceContext]
    private IEnumerable<ConnectionFactory>  svc { get; set; }

    理论上支持  AddSingleton、AddTransient、AddScoped

    over

  • 相关阅读:
    git命令评测
    so文件成品评论【整理】
    Codeforces 85B. Embassy Queue【段树、馋】
    JPEG图像扩展信息读取和修改
    【 D3.js 入门系列 --- 0 】 简介及安装
    unity3d 学习笔记(三)
    ListView 泛利
    [React] Create an Auto Resizing Virtualized List with react-virtualized
    [PReact] Integrate Redux with Preact
    [Preact] Integrate react-router with Preact
  • 原文地址:https://www.cnblogs.com/huawublog/p/14503887.html
Copyright © 2011-2022 走看看