Привязка конфигурации в ядре do tnet не работает с KeyValuePair - PullRequest
0 голосов
/ 22 января 2020

Я хотел бы использовать привязку конфигурации для загрузки строго типизированного класса.

Как часть этого класса, существует IList<KeyValuePair<string,string>>. Это свойство продолжает возвращаться пустым, и я понятия не имею, почему.

Поддерживается ли KeyValuePair<string,string>? Он будет работать с пользовательским POCO.

Пример кода:

//POCO Classes and Sample Code
public class FieldMap
{
    public string Key { get; set; }
    public string Value { get; set; }
}

public class EntityMap
{
    public IList<KeyValuePair<string, string>> KeyValues { get; set; }
    public IList<FieldMap> FieldMaps { get; set; }
}

public Configuration()
{
    var configuration = new ConfigurationBuilder()
     .SetBasePath(Directory.GetCurrentDirectory())
     .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
     .Build();


    var entityMaps = new Models.EntityMap();
    var entitySection = configuration.GetSection("EntityMaps");
    entitySection.Bind(entityMaps);

    System.Diagnostics.Debug.Assert(entityMaps.FieldMaps.Count > 0);
    System.Diagnostics.Debug.Assert(entityMaps.KeyValues.Count > 0);
}

JSON Конфиг:

{
  "EntityMaps": {
    "KeyValues": [
      {
        "Key": "fred",
        "Value": "fredly"
      }
    ],
    "FieldMaps": [
      {
        "Key": "fred",
        "Value": "fredly"
      }
    ]
  }
}
...