【问题标题】:Custom IOptions map path自定义 IOptions 映射路径
【发布时间】:2020-08-18 14:32:01
【问题描述】:

我目前有一个看起来像这样的 Json 配置文件:

{
    "MySettings" " {
         "SomeSetting" : "SomeValue"
    }
}

在完美的世界中,我会有一个匹配相同结构的类。但是,我需要将它映射到一个看起来像这样的类:

public class MySettingsUpdated
{
    public string MyRenamedSetting {get;set;}
}

我已经在使用自定义的 ConfigurationProvider 从配置文件中获取数据(出于各种原因),并且我可以在其中的预期路径中创建数据,但如果我可以装饰它会让我的生活更轻松具有某种类型属性的新类,以指定数据需要来自哪里。

有什么办法吗?

【问题讨论】:

  • 您可以在启动时配置services.Configure<MySettingsUpdated>(options => { options.MyRenamedSetting = this.Configuration["MySettings:SomeSetting"]; });等选项。

标签: c# .net-core configuration


【解决方案1】:
    static string data = @"
    {
      ""class"": {
        ""property"" :  ""some string!""
      }
    }";

    class DTO
    {
        [JsonProperty("class")]
        public Data Property { get; set; }
    }

    class Data
    {
        [JsonProperty("property")]
        public string Value { get; set; }
    }

    static void Main(string[] args)
    {
        var result = JsonConvert.DeserializeObject<DTO>(data);
    }

【讨论】:

  • 感谢您的回答。然而,这并没有解决问题。
【解决方案2】:

您可以使用IConfigurationSection接口上公开的.Bind()方法。

在一个类中它可能看起来像

public class SomeClassDoingWork
{
    private MyConfigClass MyConf = new MyConfigClass();

    public SomeClassDoingWork(IConfiguration config)
    {
        config.GetSection("MySettings").Bind(MyConf);
    }
}

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 2021-12-30
    • 2015-05-03
    • 1970-01-01
    • 2021-12-28
    • 2022-01-08
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多