Объединение имен вложенных полей объектов с помощью двоеточия(:)

#c# #.net #asp.net-core

Вопрос:

Я работаю над настройкой поставщика конфигурации в памяти. И для этого сначала я должен иметь возможность конвертировать вложенные настройки в разделенные двоеточием ключи и значения, чтобы я мог прочитать их с помощью IConfigurationRoot. Итак, есть ли расширение или что-то, что я могу использовать для автоматического преобразования любого объекта, скажем

 public class Person{
   public string Name {get; set;}
   public Contact Contact {get; set;}
} 
public class Contact{
  public string Email {get; set;}
  public string Phone {get; set;}
}
 

в следующий формат

 Dictionary<string, string> settings = new Dictionary<string, string>();
settings.Add("Person:Name", "Jack");
settings.Add("Person:Contact:Email", "jack@gmail.com");
 

Комментарии:

1. settings.Add("Person:Gender", 1); не может быть присвоено Dictionary<string, string> . 1 — это не строка. Кроме того, вам необходимо рассмотреть случаи, когда вложенный объект является либо массивом, либо коллекцией. Каким должен быть ожидаемый результат в случае сбора или массива?

2. @Navjot Сингх Спасибо, что связался. Да, я исправлю это, я просто пытался привести пример. Ожидаемые объекты-это объекты, похожие на то, что мы можем найти в файле appsettings.json.