Estoy creando una serie de clases Interfaces/Resumen que contienen propiedades básicas y me gustaría tener propiedades calculadas y herencia múltiple.C#: Herencia múltiple con propiedades calculadas no abstractas
public abstract class /interface Modifiable
{
public DateTime ModifiedDate {get; set;}
public boo ModifiedToday
{
get { return DateTime.Now.AddDays(-1).CompareTo(ModifiedDate) >= 0; }
}
public bool ModifiedInLastWeek
{
get { return DateTime.Now.AddDays(-7).CompareTo(ModifiedDate) >= 0; }
}
}
public abstract class /interface Deletable
{
public DateTime DeletionDate {get; set;}
public bool Deleted
{
get { return DeletionDate != default(DateTime) }
}
}
Luego tengo una clase que hereda de estas dos clases Interfaces/Resumen.
public class Something : Modifiable, Deletable
{
//
}
Pero una clase no puede heredar de dos clases abstractas. Entonces necesito usar interfaces, pero con las interfaces no puedo tener cuerpos de métodos. Luego tengo que definir las mismas funciones exactas en múltiples clases para implementar estas propiedades de bool simples usando interfaces.
Tampoco quiero tener heredabilidad modificable de Deletable porque podría querer que algo sea modificable pero no eliminable. Estas clases específicas no son mi problema, simplemente las estoy usando para ilustrar mi problema.
¿Hay un patrón de diseño que imita una clase abstracta al permitir cuerpos de función, pero permite múltiples herederos como una interfaz?
Esto no está directamente relacionada a su pregunta, pero solo un par de comentarios: 1. Tal vez quiera usar un 'DateTime?' (Nitulo fechable) en su lugar, luego puede hacer 'DeletionDate! = null' en lugar de' return DeletionDate! = default (DateTime) '. 2. Es una convención de C# poner "I" antes de los nombres de las interfaces, por lo que querría tener 'IModifiable' y' IDeletable'. –