[英]How to Implement a Base Class with a Method and yet force the Derived Class to Override it?
[英]Implement base method, yet still provide own implementation?
有2个字符串要解析:
param1=value1;param2=value2;param3=value3;
和...
param1=value1;param4=value4;param999=value999;
每个参数都必须解析为不同的,因为它们包含不同类型的复杂信息。 在神圣的DRY范例的所有荣耀中,“ param1
”的解析仅执行一次似乎是适当的。 基类实现可能如下所示:
public abstract class MyBase {
public ComplexObj MyParam1 { get; set; }
public abstract static MyBase Parse(string myString) {
// some sinful witchcraft that parses the value
// of param1 into the ComplexObj MyParam1
// and returns an instance of MyBase
}
}
派生类可能如下所示:
public class MyDerived : MyBase {
public ComplexObj2 MyParam2 { get; set; }
public ComplexObj3 MyParam3 { get; set; }
public static MyDerived Parse(string myString) {
params = myString.Split('params/values')
base.Parse(params[0]);
MyParam2 = magicParseParam2[1];
MyParam3 = magicParseParam3[2];
}
}
现在,这显然不起作用,因为我将基类的Parse()
方法声明为抽象的,从而迫使每个派生类提供其自己的方法实现。 但是在这种情况下,我不想为每个实现编写param1
的解析。
我怎么解决这个问题?
使基本方法虚拟而不是抽象。 然后,您可以在实现类中调用base.Parse(string)。
编辑:哦,不要让它们静态。 看起来您想要做什么,您想要创建该类的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.