0

有2个字符串要解析:

param1=value1;param2=value2;param3=value3;

和...

param1=value1;param4=value4;param999=value999;

每个参数都必须进行不同的解析,因为它们包含不同类型的复杂信息。param1在神圣的 DRY 范式的所有荣耀中,对 ' ' 的解析只进行一次似乎是合适的。基类实现可能如下所示:

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为每个实现编写解析。

我怎么解决这个问题?

4

1 回答 1

2

使基本方法虚拟而不是抽象。然后你可以在实现类中调用 base.Parse(string) 。

编辑:哦,不要让它们成为静态的。对于您想要做的事情,您似乎想要创建该类的一个实例。

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

于 2013-10-07T09:32:20.703 回答