This commit is contained in:
2024-10-21 11:55:12 -07:00
parent 59db921a65
commit 61cbb37001
7 changed files with 79 additions and 54 deletions

View File

@ -3,35 +3,36 @@ using System.Text.Json.Serialization;
namespace WinLog.Models;
public class AppSettings
[method: JsonConstructor]
public class AppSettings(string dateFormat,
string directory,
string logFilter,
string[] messageFilters,
string monitorApplicationResource,
string monitorApplicationSite,
int millisecondsDelay,
int rollingMinutes)
{
public string DateFormat { init; get; }
public string Directory { init; get; }
public string LogFilter { init; get; }
public string[] MessageFilters { init; get; }
public string MonitorApplicationResource { init; get; }
public string MonitorApplicationSite { init; get; }
public int MillisecondsDelay { init; get; }
public int RollingMinutes { init; get; }
[JsonConstructor]
public AppSettings(string dateFormat, string directory, string logFilter, string[] messageFilters, string monitorApplicationResource, string monitorApplicationSite, int millisecondsDelay, int rollingMinutes)
{
Directory = directory;
LogFilter = logFilter;
DateFormat = dateFormat;
MessageFilters = messageFilters;
MonitorApplicationResource = monitorApplicationResource;
MonitorApplicationSite = monitorApplicationSite;
MillisecondsDelay = millisecondsDelay;
RollingMinutes = rollingMinutes;
}
public string DateFormat { init; get; } = dateFormat;
public string Directory { init; get; } = directory;
public string LogFilter { init; get; } = logFilter;
public string[] MessageFilters { init; get; } = messageFilters;
public string MonitorApplicationResource { init; get; } = monitorApplicationResource;
public string MonitorApplicationSite { init; get; } = monitorApplicationSite;
public int MillisecondsDelay { init; get; } = millisecondsDelay;
public int RollingMinutes { init; get; } = rollingMinutes;
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(AppSettings))]
internal partial class AppSettingsSourceGenerationContext : JsonSerializerContext
{
}

View File

@ -0,0 +1,2 @@
[*.cs]
csharp_preserve_single_line_statements = true

View File

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace WinLog.Models.Binder;
@ -21,29 +22,21 @@ public class AppSettings
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
string result = JsonSerializer.Serialize(this, BinderAppSettingsSourceGenerationContext.Default.AppSettings);
return result;
}
private static Models.AppSettings Get(AppSettings appSettings)
private static Models.AppSettings Get(AppSettings? appSettings)
{
Models.AppSettings result;
if (appSettings.DateFormat is null)
throw new NullReferenceException(nameof(DateFormat));
if (appSettings.Directory is null)
throw new NullReferenceException(nameof(Directory));
if (appSettings.LogFilter is null)
throw new NullReferenceException(nameof(LogFilter));
if (appSettings.MessageFilters is null)
throw new NullReferenceException(nameof(MessageFilters));
if (appSettings.MillisecondsDelay is null)
throw new NullReferenceException(nameof(MillisecondsDelay));
if (appSettings.MonitorApplicationResource is null)
throw new NullReferenceException(nameof(MonitorApplicationResource));
if (appSettings.MonitorApplicationSite is null)
throw new NullReferenceException(nameof(MonitorApplicationSite));
if (appSettings.RollingMinutes is null)
throw new NullReferenceException(nameof(RollingMinutes));
if (appSettings?.DateFormat is null) throw new NullReferenceException(nameof(DateFormat));
if (appSettings?.Directory is null) throw new NullReferenceException(nameof(Directory));
if (appSettings?.LogFilter is null) throw new NullReferenceException(nameof(LogFilter));
if (appSettings?.MessageFilters is null) throw new NullReferenceException(nameof(MessageFilters));
if (appSettings?.MillisecondsDelay is null) throw new NullReferenceException(nameof(MillisecondsDelay));
if (appSettings?.MonitorApplicationResource is null) throw new NullReferenceException(nameof(MonitorApplicationResource));
if (appSettings?.MonitorApplicationSite is null) throw new NullReferenceException(nameof(MonitorApplicationSite));
if (appSettings?.RollingMinutes is null) throw new NullReferenceException(nameof(RollingMinutes));
result = new(appSettings.DateFormat, appSettings.Directory, appSettings.LogFilter, appSettings.MessageFilters, appSettings.MonitorApplicationResource, appSettings.MonitorApplicationSite, appSettings.MillisecondsDelay.Value, appSettings.RollingMinutes.Value);
return result;
}
@ -51,9 +44,17 @@ public class AppSettings
public static Models.AppSettings Get(IConfiguration configuration)
{
Models.AppSettings result;
AppSettings appSettings = configuration.Get<AppSettings>();
#pragma warning disable IL3050, IL2026
AppSettings? appSettings = configuration.Get<AppSettings>();
#pragma warning restore IL3050, IL2026
result = Get(appSettings);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(AppSettings))]
internal partial class BinderAppSettingsSourceGenerationContext : JsonSerializerContext
{
}