【发布时间】:2011-03-04 20:24:11
【问题描述】:
我正在创建一系列包含基本属性的接口/抽象类,我想要计算属性和多重继承。
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
{
//
}
但是一个类不能从两个抽象类继承。所以我需要使用接口,但是使用接口我不能有方法体。然后,我必须在多个类中定义完全相同的函数,以使用接口实现这些简单的布尔属性。
我也不想让Modifiable 继承自Deletable,因为我可能希望某些东西是Modifiable 但不是Deletable。这些特定的类不是我的问题,我只是用它们来说明我的问题。
是否有一种设计模式通过允许函数体来模仿抽象类,但允许像接口这样的多个继承者?
【问题讨论】:
-
这与您的问题没有直接关系,而只是几个 cmets:1. 您可能想改用
DateTime?(可为空的 DateTime),然后您可以改用DeletionDate != null的return DeletionDate != default(DateTime)。 2. C# 约定在接口名称前加上“I”,所以你会想要IModifiable和IDeletable。
标签: c# inheritance abstract-class