0

解析する文字列は 2 つあります。

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

と...

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

パラメータにはさまざまなタイプの複雑な情報が含まれているため、すべてのパラメータを個別に解析する必要があります。param1神聖な DRY パラダイムのすべての栄光において、' ' の解析は 1 回だけ行うのが適切であるように思われます。基本クラスの実装は次のようになります。

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