小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

aspnetcore DI 多實(shí)例注入及獲取

 新進(jìn)小設(shè)計(jì) 2022-12-21 發(fā)布于北京

廢話不說(shuō),直接代碼

//注入  按單例模式注入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);
}

獲取方式也很簡(jiǎn)單,主要有兩種

1.構(gòu)造中接收

/// <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

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多