Add Json source generation

This commit is contained in:
2022-11-01 22:04:59 +01:00
parent 1bdebd6f5a
commit a36d306279
10 changed files with 74 additions and 16 deletions

View File

@@ -1,4 +1,5 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Alma.Services;
@@ -6,13 +7,16 @@ public class JsonConfigurationFileReader : IConfigurationFileReader
{
private static readonly JsonSerializerOptions DefaultOptions = new(JsonSerializerDefaults.Web);
public async Task<(T? Result, string? FileName)> DeserializeAsync<T>(string fileNameWithoutExtension, string? extension) where T : class
public async Task<(T? Result, string? FileName)> DeserializeAsync<T>(
string fileNameWithoutExtension,
Func<JsonSerializerOptions, JsonSerializerContext> contextGenerator,
string? extension) where T : class
{
extension ??= "json";
var fileName = fileNameWithoutExtension + "." + extension;
if (!File.Exists(fileName)) return (null, null);
await using FileStream openStream = File.OpenRead(fileName);
return (await JsonSerializer.DeserializeAsync<T>(openStream, DefaultOptions), fileName);
return ((T?)await JsonSerializer.DeserializeAsync(openStream, typeof(T), contextGenerator(DefaultOptions)), fileName);
}
}