假设Config
是IConfiguration
,而services
是ServiceCollection
,则下面的代码:
var section = Config.GetSection("MyDatabaseOptions");
var configdb = secao.Get<MyDbConfiguration>();
configdb.ConnectionString = DoSomethingWithSectionObject(configdb);
我想用section
的新内容更新configdb.ConnectionString
以便能够使用以下命令在ServiceCollection
上进行配置:
services.Configure<MyDbConfiguration>(section);
我该怎么做?还是有另一种方法?
答案 0 :(得分:1)
IConfiguration
只是字符串的层次结构,在内部具有指向它的路径,因此您可以使用带有正确键的索引器来修改值:
var section = Config.GetSection("MyDatabaseOptions");
var configdb = section.Get<MyDbConfiguration>();
section[nameof(MyDbConfiguration.ConnectionString)] = DoSomethingWithSectionObject(configdb);
但是它仅适用于字符串,如果您要修改整个结构,会稍微复杂一点,但是思路仍然是相同的-您需要指定属性和字符串值的路径,例如:
Configuration[$"{section.Path}:{nameof(MyDbConfiguration.ConnectionString)}"] = "new value";