在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