using System.Text.Json; using System.Text.Json.Serialization; namespace Parsing_Packets.Models.Binder; public class PhysicalAddressConfiguration { public string? Description { get; set; } public string? DeviceName { get; set; } public string? Directory { get; set; } public string? IPV4Filter { get; set; } public int? ReadTimeoutMilliseconds { get; set; } public int? RemoveHistoryAfter { get; set; } public string? StringOutputType { get; set; } public bool? UseARP { get; set; } public override string ToString() { string result = JsonSerializer.Serialize(this, BinderPhysicalAddressConfigurationSourceGenerationContext.Default.PhysicalAddressConfiguration); return result; } private static void PreVerify(IConfigurationRoot configurationRoot, PhysicalAddressConfiguration? configuration) { if (configuration?.Description is null) { foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) { if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) continue; if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) continue; if (!physicalFileProvider.Root.Contains("UserSecrets")) continue; throw new NotSupportedException(physicalFileProvider.Root); } throw new NotSupportedException("Not Found!"); } } private static void Verify(PhysicalAddressConfiguration _) { } private static Models.PhysicalAddressConfiguration Get(PhysicalAddressConfiguration? configuration) { Models.PhysicalAddressConfiguration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); if (configuration.Description is null) throw new NullReferenceException(nameof(configuration.Description)); if (configuration.DeviceName is null) throw new NullReferenceException(nameof(configuration.DeviceName)); if (configuration.Directory is null) throw new NullReferenceException(nameof(configuration.Directory)); if (configuration.IPV4Filter is null) throw new NullReferenceException(nameof(configuration.IPV4Filter)); if (configuration.ReadTimeoutMilliseconds is null) throw new NullReferenceException(nameof(configuration.ReadTimeoutMilliseconds)); if (configuration.RemoveHistoryAfter is null) throw new NullReferenceException(nameof(configuration.RemoveHistoryAfter)); if (configuration.StringOutputType is null) throw new NullReferenceException(nameof(configuration.StringOutputType)); if (configuration.UseARP is null) throw new NullReferenceException(nameof(configuration.UseARP)); Verify(configuration); result = new(configuration.Description, configuration.DeviceName, configuration.Directory, configuration.IPV4Filter, configuration.ReadTimeoutMilliseconds.Value, configuration.RemoveHistoryAfter.Value, configuration.StringOutputType, configuration.UseARP.Value); return result; } public static Models.PhysicalAddressConfiguration Get(IConfigurationRoot configurationRoot) { Models.PhysicalAddressConfiguration result; IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.PhysicalAddressConfiguration)); #pragma warning disable IL3050, IL2026 PhysicalAddressConfiguration? configuration = configurationSection.Get(); #pragma warning restore IL3050, IL2026 PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } } [JsonSourceGenerationOptions(WriteIndented = true)] [JsonSerializable(typeof(PhysicalAddressConfiguration))] internal partial class BinderPhysicalAddressConfigurationSourceGenerationContext : JsonSerializerContext { }