38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
using Microsoft.Extensions.Configuration.Json;
|
|
using Microsoft.Extensions.FileProviders;
|
|
|
|
namespace TheXamlGuy.TaskbarGroup.Core
|
|
{
|
|
public class WritableJsonConfigurationProvider : JsonConfigurationProvider
|
|
{
|
|
private readonly WritableJsonConfigurationFile writableJsonConfigurationFile;
|
|
|
|
public WritableJsonConfigurationProvider(JsonConfigurationSource source) : base(source)
|
|
{
|
|
writableJsonConfigurationFile = new WritableJsonConfigurationFile();
|
|
}
|
|
|
|
public override void Load(Stream stream)
|
|
{
|
|
Data = writableJsonConfigurationFile.Parse(stream);
|
|
}
|
|
|
|
public override void Set(string key, string value)
|
|
{
|
|
var file = Source.FileProvider?.GetFileInfo(Source.Path ?? string.Empty);
|
|
static Stream OpenRead(IFileInfo fileInfo)
|
|
{
|
|
if (fileInfo.PhysicalPath is not null)
|
|
{
|
|
return new FileStream(fileInfo.PhysicalPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
|
|
}
|
|
|
|
return fileInfo.CreateReadStream();
|
|
}
|
|
|
|
using Stream stream = OpenRead(file);
|
|
writableJsonConfigurationFile.Write(key, value, stream);
|
|
}
|
|
}
|
|
}
|