在recent question on Stack Overflow中,我問我如何通過文件名解析文件的額外元信息。當我想要繼承和添加屬性時如何處理密封類
在我解決了這個問題之後,我決定創建一個新類型的對象來存放元數據和原始文件。我想我可能會做這樣的事情:
class BackupFileInfo : FileInfo, IEquatable<BackupFileInfo>
{
//Properties and Methods here
}
的想法是,我會保留原有的FileInfo
對象,而在實現FileInfo
對象的屬性加元信息,如IsMainBackup
。
但是,FileInfo
是密封的,這意味着其他類不能繼承它。
相反,我結束了以下內容:
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);
}
}
我並不十分興奮,這個解決方案,因爲不是能夠使用BackupFileInfo.Length
,我將不得不使用BackupFileInfo.FileInfo.Length
。也許這已經是最好的做法,但有些事情感覺不對。
有沒有更好的方法來處理這個問題?
正是我要寫的。 – wheaties 2010-01-07 21:34:50
這也被命名爲'最少知識原則'' – 2010-01-07 22:29:22