Вы можете использовать провайдеров конфигурации для считывания данных конфигурации в пары ключ-значение из различных источников конфигурации.
Во-первых, вы можете сделать класс
public class MiscSettings
{
public string region_code { get; set; }
public string dbserver { get; set; }
public string dbname { get; set; }
public string url { get; set; }
public string hasChapter { get; set; }
}
А затем вы создаете файл appsettings.json или как хотите. Затем вы можете поместить себя, Джейсон, в созданный файл, как показано ниже.
{
"miscSettings": [
{
"region_code": "east",
"dbserver": "dbsvr1",
"dbname": "dbeast",
"url": "https://....",
"hasChapter": "true"
},...
{
"region_code": "southwest",
"dbserver": "dbsvr2",
"dbname": "dbsw",
"url": "https://....",
"hasChapter": "true"
}
]
}
Теперь в вашем классе программы вы можете прочитать настройки, как показано ниже.
class Program
{
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
List<MiscSettings> miscSettings = config.GetSection("miscSettings")
.GetChildren()
.ToList()
.Select(x => (new MiscSettings
{
region_code = x.GetValue<string>("region_code"),
dbserver = x.GetValue<string>("dbserver"),
dbname = x.GetValue<string>("dbname"),
url = x.GetValue<string>("url"),
hasChapter = x.GetValue<string>("hasChapter")
})).ToList();
MiscSettings settingsForEast = miscSettings.Where(x => x.region_code.Equals("east")).FirstOrDefault();
}
}
Я ответил на основании моего понимания вашего требования. Вам нужно добавить следующее из nuget в ваши решения.
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Binder
Microsoft.Extensions.Configuration.FileExtensions
Microsoft.Extensions.Configuration.Json