C #: Множественное наследование с неабстрактными вычисляемыми свойствами

Я создаю серию классов интерфейсов / абстрактных, которые содержат базовые свойства, и я хотел бы иметь вычисляемые свойства и множественное наследование.

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) }
   }
}

Затем у меня есть класс, который наследуется от этих двух классов интерфейсов / абстрактных .

public class Something : Modifiable, Deletable 
{
  //
}

Но класс не может наследовать от двух абстрактных классов. Тогда мне нужно использовать интерфейсы, но с интерфейсами у меня не может быть тел методов. Затем мне нужно определить одни и те же точные функции для нескольких классов, чтобы реализовать эти простые свойства bool с использованием интерфейсов.

Я также не хочу, чтобы Modifiable наследовал от Deletable, потому что я могу захотеть, чтобы что-то было Modifiable, но не Deletable. Эти конкретные классы не являются моей проблемой, я просто использую их, чтобы проиллюстрировать свою проблему.

Есть ли шаблон проектирования, который имитирует абстрактный класс, разрешая тела функций, но допускает несколько наследников, таких как интерфейс?

5
задан Mike 4 March 2011 в 20:24
поделиться