【发布时间】:2018-07-06 05:56:48
【问题描述】:
我的抽象类有一个像这样抽象的方法:
public abstract void Run(BaseType baseType);
现在在我必须实现此功能的派生类中,我希望它只接受来自BaseType 的特定派生类型
原来如此:
public override void Run(DerivedType derivedType){}
有什么办法可以强制执行吗?
目前我必须做的:
public override void Run(BaseType baseType) {
if(!(baseType is DerivedType)) {
// throw exception
}
}
强制类型不是很严格——我想知道是否有一种方法可以做到这一点而无需不断添加类型检查?
【问题讨论】:
-
我认为在设计时你不能强制执行它。在运行时使用实际实例,您只需检查一次类型并记住这一点。
-
public new void Run(DerivedType derivedType) { base.Run(derivedType); }如果我明白你想要什么? -
@vasily.sib
base.Run不起作用,因为基本方法是抽象的 - 它没有主体。但我可以试试。那算作实现抽象方法吗?否则,它仍然不是所有可执行的。 -
@WDUK 直言不讳,您在重新构建应用程序的这一部分时可能会更成功。
标签: c#