How to deal with a sealed class when I wanted to inherit and add properties
This is one of the classic composition instead of inheritance examples and you went in the right direction.
To solve your property problem just create a property called Length
that delegates to the encapsulated FileInfo
object.
You could add an implicit operator to your class.
Eg:
class BackupFileInfo .... {
/* your exiting code */
public static implicit operator FileInfo( BackupFileInfo self ){
return self.FileInfo;
}
}
You could then treat your BackupFileInfo object like a FileInfo object like so
BackupFileInfo bf = new BackupFileInfo();
...
int mylen = ((FileInfo)bf).Length;
You could just expose the properties on FileInfo you care about. Something like this:
public long Length { get { return FileInfo.Length; } }
This obviously becomes less practical if you want to delegate a lot of properties to FileInfo.
Pass-thru?
class BackupFileInfo : IEquatable<BackupFileInfo>
{
public long Length {get {return FileInfo.Length;}}
//.... [snip]
}
Also, a prop called FileInfo
is asking for trouble... it may need disambiguation against the FileInfo
class in a few places.