using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; public record ExifDirectory(AviDirectory[] AviDirectories, object? Encoding, ExifDirectoryBase[] ExifBaseDirectories, FileMetadataDirectory[] FileMetadataDirectories, FilePath FilePath, GifHeaderDirectory[] GifHeaderDirectories, GpsDirectory[] GpsDirectories, int? Height, JpegDirectory[] JpegDirectories, MakernoteDirectory[] MakernoteDirectories, PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName? PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName, PhotoshopDirectory[] PhotoshopDirectories, PngDirectory[] PngDirectories, QuickTimeMovieHeaderDirectory[] QuickTimeMovieHeaderDirectories, QuickTimeTrackHeaderDirectory[] QuickTimeTrackHeaderDirectories, WebPDirectory[] WebPDirectories, int? Width) { public override string ToString() { string result = JsonSerializer.Serialize(this, ExifDirectorySourceGenerationContext.Default.ExifDirectory); return result; } public static ExifDirectory Get(object encoding, ExifDirectory e) => new(e.AviDirectories, encoding, e.ExifBaseDirectories, e.FileMetadataDirectories, e.FilePath, e.GifHeaderDirectories, e.GpsDirectories, e.Height, e.JpegDirectories, e.MakernoteDirectories, e.PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName, e.PhotoshopDirectories, e.PngDirectories, e.QuickTimeMovieHeaderDirectories, e.QuickTimeTrackHeaderDirectories, e.WebPDirectories, e.Width); } [JsonSourceGenerationOptions(WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)] [JsonSerializable(typeof(ExifDirectory))] public partial class ExifDirectorySourceGenerationContext : JsonSerializerContext { }