我正在努力实现这样的目标:
那么我的控制器中就会有这个:
public class Child1Controller : Controller
{
public Child1Controller(Child1Settings settings)
{
// settings.BaseSetting and settings.Child1Setting should both be accessible here
}
}
我试过这个:
public class BaseSettings
{
public string BaseSetting { get; set; }
}
public class Child1Settings : BaseSettings
{
public string Child1Setting { get; set; }
}
应用程序设置.json
{
"BaseSettings": {
"BaseSetting": "BaseSettingValue"
},
"Child1Settings": {
"Child1Setting": "Child1SettingValue"
}
}
启动.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<Child1Settings>(options => Configuration.GetSection("Child1Settings").Get<Child1Settings>());
services.AddSingleton(Configuration);
}
这可以很好地填充 Child1Settings 字段,但不能填充 BaseSettings 字段。我可以看到这个工作(虽然我没有尝试过),但这感觉很荒谬,如果我有很多子设置类,会导致很多冗余和潜在的错误:
应用程序设置.json
{
"Child1Settings": {
"BaseSettings": {
"BaseSetting": "BaseSettingValue"
}
"Child1Setting": "Child1SettingValue"
},
"Child2Settings": {
"BaseSettings": {
"BaseSetting": "BaseSettingValue"
}
"Child2Setting": "Child2SettingValue"
}
}
实现此目的的一种方法是使用基本部分数据配置您的子项,然后使用子项特定数据对其进行配置,如下所示:
services.Configure<Child1Settings>(hostContext.Configuration.GetSection("BaseSettings"));
services.Configure<Child1Settings>(hostContext.Configuration.GetSection("Child1Settings"));
这样第一次调用Configure<Child1Settings>
将使用基础数据配置它。下一个呼叫Configure<Child1Settings>
将覆盖您在 BaseSettings 中配置的内容并向其中添加额外的 Child1Settings。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)