使用MVC .net Core并在启动类中构建具体的配置类。我的appsettings.json看起来像这样:
{
"myconfig": {
"other2": "tester,
"other": "tester",
"root": {
"inner": {
"someprop": "TEST VALUE"
}
}
}
}
我用一个具体的类来表示这个,如下:
public class TestConfig
{
public string other2 { get; set; }
public string other { get; set; }
public Inner1 root { get; set; }
}
public class Inner1
{
public Inner2 inner { get; set; }
}
public class Inner2
{
public string someprop { get; set; }
}
通过执行以下操作,我可以轻松地对此进行映射:
var testConfig = config.GetSection("myconfig").Get<TestConfig>();
但是...。我对上述内容不满意的是需要使TestConfig变得比需要的复杂。理想情况下,我想要这样的东西:
public class PreciseConfig
{
[Attribute("root:inner:someprop")]
public string someprop { get; set; }
public string other { get; set; }
public string other2 { get; set; }
}
我不需要在其中嵌套对象,并且可以通过这种方式直接映射到较低的属性。这可能吗?使用.net Core 2.1。
感谢任何预先提供的指针!
P.s。我知道我可以自己创建一个PreciseConfig实例并使用config.GetValue<string>("root:inner:someprop")
设置属性,但是如果我可以使用序列化属性或类似属性自动进行设置,则不需要以这种方式设置所有自定义设置。 / p>
答案 0 :(得分:2)
对于更高级别的配置,您将获得与顶部节点相同的配置。
然后使用路径myconfig:root:inner
获取另一个所需的部分,并从上一步绑定PreciseConfig
var preciseConfig = config.GetSection("myconfig").Get<PreciseConfig>();
config.GetSection("myconfig:root:inner").Bind(preciseConfig);