using Microsoft.Extensions.Configuration; using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Rename.Models.Binder; public class Configuration { public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; } public string[]? IgnoreExtensions { get; set; } public string? PersonBirthdayFormat { get; set; } public bool? PropertiesChangedForMetadata { get; set; } public override string ToString() { string result = JsonSerializer.Serialize(this, BinderConfigurationSourceGenerationContext.Default.Configuration); return result; } private static Models.Configuration Get(Configuration? configuration, Metadata.Models.MetadataConfiguration metadataConfiguration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); if (configuration.ForceMetadataLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceMetadataLastWriteTimeToCreationTime)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); if (configuration.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat)); if (configuration.PropertiesChangedForMetadata is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForMetadata)); result = new(metadataConfiguration, configuration.ForceMetadataLastWriteTimeToCreationTime.Value, configuration.IgnoreExtensions, configuration.PersonBirthdayFormat, configuration.PropertiesChangedForMetadata.Value); return result; } public static Models.Configuration Get(IConfigurationRoot configurationRoot, Metadata.Models.MetadataConfiguration metadataConfiguration) { Models.Configuration result; IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Configuration)); #pragma warning disable IL3050, IL2026 Configuration? configuration = configurationSection.Get(); #pragma warning restore IL3050, IL2026 result = Get(configuration, metadataConfiguration); return result; } } [JsonSourceGenerationOptions(WriteIndented = true)] [JsonSerializable(typeof(Configuration))] internal partial class BinderConfigurationSourceGenerationContext : JsonSerializerContext { }