In einer recent question on Stack Overflow fragte ich, wie ich durch einen Dateinamen zu zusätzlichen Meta-Informationen über eine Datei analysieren könnte.Wie man mit einer versiegelten Klasse umgeht, wenn ich Eigenschaften erben und hinzufügen wollte
Nachdem ich dieses Problem durchgearbeitet habe, habe ich entschieden, dass ich vielleicht einen neuen Objekttyp erstellen möchte, der die Metadaten und die Originaldatei enthält. Ich dachte, ich könnte etwas tun:
class BackupFileInfo : FileInfo, IEquatable<BackupFileInfo>
{
//Properties and Methods here
}
Die Idee wäre, dass ich das ursprüngliche FileInfo
Objekt behalten würde, während Meta-Informationen in den Eigenschaften des Objekts hinzufügen, die FileInfo
, wie IsMainBackup
implementiert.
Allerdings ist FileInfo
versiegelt, was bedeutet, dass andere Klassen nicht davon erben können.
Stattdessen habe ich mit folgendem endete:
class BackupFileInfo : IEquatable<BackupFileInfo>
{
public bool IsMainBackup { get; set; }
public int ImageNumber { get; set; }
public int IncrementNumber { get; set; }
public FileInfo FileInfo { get; set; }
//public BackupFileInfo() //constructor here
public bool Equals(BackupFileInfo other)
{
return (this.FileInfo.Name == other.FileInfo.Name
&& this.FileInfo.Length == other.FileInfo.Length);
}
}
Ich bin nicht sehr begeistert über diese Lösung, weil statt BackupFileInfo.Length
einsetzen zu können, werde ich BackupFileInfo.FileInfo.Length
zu verwenden haben. Vielleicht ist dies bereits die beste Vorgehensweise, aber etwas fühlt sich nicht richtig an.
Gibt es einen besseren Weg, um mit diesem Problem umzugehen?
Genau das, was ich schreiben wollte. – wheaties
Dies wird auch als "Least Knowledge Principle" –