31 lines
925 B
C#
31 lines
925 B
C#
|
|
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<IConfigurationSection> GetChildren() =>
|
||
|
|
_data.Properties().Select(p => new JsonConfigurationSection(_data, p.Name));
|
||
|
|
|
||
|
|
public IChangeToken GetReloadToken() => _changeToken;
|
||
|
|
}
|