using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; public class Storage : Properties.IStorage { protected string _DistanceResultRootDirectory; protected string _FaceRootDirectory; protected string _IndexInfoRootDirectory; protected string _MetadataRootDirectory; protected string _PeopleRootDirectory; protected string _ResizeRootDirectory; protected string _RootDirectory; protected string _RootResultsDirectory; protected string _UrlRoot; public string DistanceResultRootDirectory => _DistanceResultRootDirectory; public string FaceRootDirectory => _FaceRootDirectory; public string IndexInfoRootDirectory => _IndexInfoRootDirectory; public string MetadataRootDirectory => _MetadataRootDirectory; public string PeopleRootDirectory => _PeopleRootDirectory; public string ResizeRootDirectory => _ResizeRootDirectory; public string RootDirectory => _RootDirectory; public string RootResultsDirectory => _RootResultsDirectory; public string UrlRoot => _UrlRoot; [JsonConstructor] public Storage(string distanceResultRootDirectory, string faceRootDirectory, string indexInfoRootDirectory, string metadataRootDirectory, string peopleRootDirectory, string resizeRootDirectory, string rootDirectory, string rootResultsDirectory, string urlRoot) { _DistanceResultRootDirectory = distanceResultRootDirectory; _FaceRootDirectory = faceRootDirectory; _IndexInfoRootDirectory = indexInfoRootDirectory; _MetadataRootDirectory = metadataRootDirectory; _PeopleRootDirectory = peopleRootDirectory; _ResizeRootDirectory = resizeRootDirectory; _RootDirectory = rootDirectory; _RootResultsDirectory = rootResultsDirectory; _UrlRoot = urlRoot; string fullRootResultsDirectory; if (rootResultsDirectory.StartsWith(rootDirectory)) fullRootResultsDirectory = rootResultsDirectory; else fullRootResultsDirectory = string.Concat(rootDirectory, rootResultsDirectory); _RootResultsDirectory = fullRootResultsDirectory; if (!distanceResultRootDirectory.StartsWith(rootDirectory)) _DistanceResultRootDirectory = string.Concat(fullRootResultsDirectory, distanceResultRootDirectory); if (!faceRootDirectory.StartsWith(rootDirectory)) _FaceRootDirectory = string.Concat(fullRootResultsDirectory, faceRootDirectory); if (!indexInfoRootDirectory.StartsWith(rootDirectory)) _IndexInfoRootDirectory = string.Concat(fullRootResultsDirectory, indexInfoRootDirectory); if (!metadataRootDirectory.StartsWith(rootDirectory)) _MetadataRootDirectory = string.Concat(fullRootResultsDirectory, metadataRootDirectory); if (!peopleRootDirectory.StartsWith(rootDirectory)) _PeopleRootDirectory = string.Concat(fullRootResultsDirectory, peopleRootDirectory); if (!resizeRootDirectory.StartsWith(rootDirectory)) _ResizeRootDirectory = string.Concat(fullRootResultsDirectory, resizeRootDirectory); } public Storage(string rootDirectory, string rootResultsDirectory, string peopleRootDirectory) { _DistanceResultRootDirectory = "distanceResultRootDirectory"; _FaceRootDirectory = "faceRootDirectory"; _IndexInfoRootDirectory = "indexInfoRootDirectory"; _MetadataRootDirectory = "metadataRootDirectory"; _PeopleRootDirectory = peopleRootDirectory; _ResizeRootDirectory = "resizeRootDirectory"; _RootDirectory = rootDirectory; _RootResultsDirectory = rootResultsDirectory; _UrlRoot = "urlRoot"; } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } // ... }