namespace View_by_Distance.Property.Models; public class FileHolder { protected readonly DateTime _CreationTime; protected readonly string? _DirectoryName; protected readonly bool _Exists; protected readonly string _ExtensionLowered; protected readonly string _FullName; protected readonly DateTime _LastWriteTime; protected readonly long? _Length; protected readonly string _Name; protected readonly string _NameWithoutExtension; public DateTime CreationTime => _CreationTime; public string? DirectoryName => _DirectoryName; public bool Exists => _Exists; public string ExtensionLowered => _ExtensionLowered; public string FullName => _FullName; public DateTime LastWriteTime => _LastWriteTime; public long? Length => _Length; public string Name => _Name; public string NameWithoutExtension => _NameWithoutExtension; public FileHolder(DateTime creationTime, string? directoryName, bool exists, string extensionLowered, string fullName, DateTime lastWriteTime, long? length, string name, string nameWithoutExtension) { _CreationTime = creationTime; _DirectoryName = directoryName; _Exists = exists; _ExtensionLowered = extensionLowered; _FullName = fullName; _LastWriteTime = lastWriteTime; _Length = length; _Name = name; _NameWithoutExtension = nameWithoutExtension; } public FileHolder(string fileName) { FileInfo fileInfo = new(fileName); _CreationTime = fileInfo.CreationTime; _CreationTime = fileInfo.CreationTime; _DirectoryName = fileInfo.DirectoryName; _Exists = fileInfo.Exists; _ExtensionLowered = fileInfo.Extension.ToLower(); _FullName = fileInfo.FullName; _LastWriteTime = fileInfo.LastWriteTime; if (fileInfo.Exists) _Length = fileInfo.Length; _Name = fileInfo.Name; _NameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName); } public FileHolder(FileInfo fileInfo) { _CreationTime = fileInfo.CreationTime; _CreationTime = fileInfo.CreationTime; _DirectoryName = fileInfo.DirectoryName; _Exists = fileInfo.Exists; _ExtensionLowered = fileInfo.Extension.ToLower(); _FullName = fileInfo.FullName; _LastWriteTime = fileInfo.LastWriteTime; if (fileInfo.Exists) _Length = fileInfo.Length; _Name = fileInfo.Name; _NameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName); } public static FileHolder Refresh(FileHolder fileHolder) => new(fileHolder.FullName); }