【发布时间】:2018-10-31 18:42:06
【问题描述】:
当基类不是抽象类时,有没有办法要求在派生类中重写属性?例如:
public abstract class BaseClass
{
protected abstract string Test {get;}
}
internal class FirstClass : BaseClass
{
protected override string Test => "First Class";
// Methods common to FirstClass and SecondClass
}
internal class SecondClass : FirstClass
{
protected override string Test => "Second Class"
}
如果任何类继承自FirstClass,是否有办法强制覆盖FirstClass 中的属性test?
实际需要(可能不是很大)是在记录信息时,我们希望记录错误来源(类名等),因此我们希望强制所有叶派生类覆盖某些属性。
【问题讨论】:
-
因为它是一个现有的代码库,而且 FirstClass 已经有许多可供 SecondClass 重用的方法。此外,将这些常用方法移至基类也不是一个好习惯,因为从基类继承的其他类不需要这些方法...
-
如果您想要记录类名,那么为什么不简单地让您的记录代码调用
this.GetType().Name呢? -
故事很长,但故事很短,因为遗留代码的设计方式是我们无法做到的:(。
标签: c# inheritance