有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
的解析。
我該如何解決這個問題?
有沒有這樣的事情作爲抽象的靜態方法與實現。 (1)抽象方法沒有實現(2)靜態方法不能抽象或虛擬。 –