Files
FSI.BT.IR.Tools/Config.Net/Stores/DictionaryConfigStore.cs
Stephan Maier 647f938eee v1.2
2024-08-27 08:10:27 +02:00

65 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using Config.Net.Core;
namespace Config.Net.Stores
{
class DictionaryConfigStore : IConfigStore
{
private readonly IDictionary<string, string> _container;
public DictionaryConfigStore(IDictionary<string, string>? container = null)
{
_container = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
if(container != null)
{
foreach(KeyValuePair<string, string> item in container)
{
_container[item.Key] = item.Value;
}
}
}
public bool CanRead => true;
public bool CanWrite => true;
public void Dispose()
{
}
public string? Read(string key)
{
if (key == null) return null;
if (FlatArrays.IsArrayLength(key, k => _container.GetValueOrDefaultInternal(k), out int length))
{
return length.ToString();
}
if (FlatArrays.IsArrayElement(key, k => _container.GetValueOrDefaultInternal(k), out string? element))
{
return element;
}
return _container.GetValueOrDefaultInternal(key);
}
public void Write(string key, string? value)
{
if (key == null) return;
if (value == null)
{
_container.Remove(key);
}
else
{
_container[key] = value;
}
}
}
}