Add Json source generation
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user