C#:具有非抽象计算属性的多重继承

Mik*_*ike 5 c# inheritance abstract-class

我正在创建一系列包含基本属性的Interfaces/Abstract类,我想要计算属性和多重继承.

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) }
   }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个继承自这两个Interfaces/Abstract类的类.

public class Something : Modifiable, Deletable 
{
  //
}
Run Code Online (Sandbox Code Playgroud)

但是一个类不能从两个抽象类继承.所以我需要使用接口,但是使用接口我不能拥有方法体.然后我必须在多个类中定义相同的确切函数,以使用接口实现这些简单的bool属性.

我也不想从Deletable中获得可修改的继承,因为我可能想要一些可修改但不可删除的东西.这些特定的类不是我的问题,我只是用它们来说明我的问题.

是否存在通过允许函数体模仿抽象类的设计模式,但允许多个继承者如接口?

Ode*_*ded 1

不可以。C# 没有以这种方式实现多重继承的机制。

对于接口来说,这是可能的,因为当您定义多个接口时,您还需要全部实现它们。

考虑不同的设计,可能使用组合来重用要用于多重继承的类。