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

  • 相关阅读:
    GLSL预定义变量
    GLSL 内建函数
    GLSL语言基础
    svn:revert to this version 和 revert changes from this version的区别
    win7下搭建opengles2.0编程环境
    iconv字符编码转换
    矩阵-DirectX与OpenGL的不同
    NHibernate分页
    Web网站压力测试工具
    winform系统自动登录实现
  • 原文地址:https://www.cnblogs.com/huawublog/p/14503887.html
Copyright © 2011-2022 走看看