En un recent question on Stack Overflow, pregunté cómo podría analizar un nombre de archivo para obtener información adicional sobre un archivo.Cómo lidiar con una clase sellada cuando quería heredar y agregar propiedades
Después de resolver este problema, decidí que podría querer crear un nuevo tipo de objeto para contener los metadatos y el archivo original. Pensé que podría hacer algo como esto:
class BackupFileInfo : FileInfo, IEquatable<BackupFileInfo>
{
//Properties and Methods here
}
La idea sería que iba a retener el FileInfo
objeto original al tiempo que añade la información de metadatos en las propiedades del objeto que implementa FileInfo
, como IsMainBackup
.
Sin embargo, FileInfo
está sellado, lo que significa que otras clases no pueden heredar de él.
En cambio, terminé con lo siguiente:
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);
}
}
No estoy terriblemente emocionado por esta solución porque en lugar de ser capaz de utilizar BackupFileInfo.Length
, voy a tener que usar BackupFileInfo.FileInfo.Length
. Tal vez esta es la mejor práctica, pero algo no se siente bien.
¿Hay una forma mejor de solucionar este problema?
Exactamente lo que estaba a punto de escribir. – wheaties
Esto también se denomina 'Principio de conocimiento mínimo' –