我目前正在学习dotnet core 2.0(控制台应用),我正在进行配置。 我尝试使用json配置我的应用程序,这个json绑定在一个类上。它工作正常,但如果键不在json文件中,它似乎只使用默认值填充。在这种情况下,是否有一种简单的方法可以告诉系统抛出异常?
目前我通过使用反射来解决这个问题,但也许有人有更好的解决方案?
这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Configuration;
namespace ConsoleApp2
{
public class EnvironmentSettings
{
public int ValueOne { get; set; }
public int ValueTwo { get; set; }
}
class Program
{
static void Main(string[] args)
{
EnvironmentSettings testsetting = new EnvironmentSettings();
var builder = new ConfigurationBuilder();
builder.SetBasePath(@"C:\Users\username\source\repos\ConsoleApp2\ConsoleApp2\");
builder.AddJsonFile("TestConfig.json", false);
var build = builder.Build();
var child = build.GetChildren();
foreach(string key in typeof(EnvironmentSettings).GetProperties().Select(s=>s.Name))
{
if(!child.Any(item => item.Key == key))
{
throw new KeyNotFoundException($"Configuration value with key '{key}' does not exist");
}
}
build.Bind(testsetting);
Console.WriteLine($"{testsetting.ValueOne} - {testsetting.ValueTwo}");
Console.ReadLine();
}
}
}
这是我的json文件
{
"ValueOne": 1
}
如果可能的话,这是我不想改变的部分:
var child = build.GetChildren();
foreach(string key in typeof(EnvironmentSettings).GetProperties().Select(s=>s.Name))
{
if(!child.Any(item => item.Key == key))
{
throw new KeyNotFoundException($"Configuration value with key '{key}' does not exist");
}
}