繁体   English   中英

实现基本方法,但仍提供自己的实现?

[英]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)。

编辑:哦,不要让它们静态。 看起来您想要做什么,您想要创建该类的实例。

示例: http//msdn.microsoft.com/en-us/library/hfw7t1ce.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM