C# 是否有与iSeries Collection';s";TryAdd“;与IOptions一起使用的方法<;T>;图案

C# 是否有与iSeries Collection';s";TryAdd“;与IOptions一起使用的方法<;T>;图案,c#,asp.net-core,dependency-injection,.net-core,C#,Asp.net Core,Dependency Injection,.net Core,我发现.NETCoreIOptions模式非常有用,如下面的语法所示 services.Configure<MySettings>(configuration.GetSection("MySettings")); services.Configure(configuration.GetSection(“MySettings”); 我还发现TryAdd方法有助于防止重复服务注册,如下所示: services.TryAddTransient<IMyService, MyServ

我发现.NETCoreIOptions模式非常有用,如下面的语法所示

services.Configure<MySettings>(configuration.GetSection("MySettings"));
services.Configure(configuration.GetSection(“MySettings”);
我还发现TryAdd方法有助于防止重复服务注册,如下所示:

services.TryAddTransient<IMyService, MyService>();
services.TryConfigure<MySettings>(configuration.GetSection("MySettings"));
services.TryAddTransient();
我想知道是否有人知道使用IOption实现相同功能的技术,或者重复注册保护是否内置在框架中。换句话说,我在寻找这样的东西:

services.TryAddTransient<IMyService, MyService>();
services.TryConfigure<MySettings>(configuration.GetSection("MySettings"));
services.TryConfigure(configuration.GetSection(“MySettings”);

TryAdd谈到了对比赛条件的担忧。或者通常是这门课的多任务焦点。这可能包括可以从多个程序调用的函数(就像大多数Windows API函数的情况一样,除非你有一个锁定机制。你可以在并发集合中找到它,通道(一个修改过的队列)和类似的情况。这对于
字典
上的任何
TryParse
TryAdd
都是不正确的。尤其是在键值结构上,它是在尝试添加重复键时引发异常的替代方法。IServiceCollection TryAdd方法的要点不是处理并发问题,容器也不会对重复密钥引发异常。我假设OP正在尝试将“sane default”IOptions注册添加为框架的一部分,并希望允许框架用户有选择地替换该注册。有关该模式的解释,请参阅。