using Newtonsoft.Json.Linq; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Primitives; using System.Data; namespace Configuration.Core; public class JsonConfiguration : IConfiguration { private readonly JObject _data; private readonly IChangeToken _changeToken; public JsonConfiguration(JObject data, IChangeToken changeToken) { _data = data; _changeToken = changeToken; } public string this[string key] { get => _data.SelectToken(key.Replace(":", "."))?.ToString(); set => throw new NotImplementedException(); } public IConfigurationSection GetSection(string key) => new JsonConfigurationSection(_data, key); public IEnumerable GetChildren() => _data.Properties().Select(p => new JsonConfigurationSection(_data, p.Name)); public IChangeToken GetReloadToken() => _changeToken; }