我遇到類似的問題Accessing a static property of a child in a parent method。首選答案提示類的設計有缺陷,需要更多信息來討論問題。在父方法中訪問子項的靜態屬性 - 設計注意事項
這是我想和你討論的情況。
我要實現一些單位知道的數據類型,例如,長度,質量,目前,... 應該有一個隱式轉換爲給定字符串創建實例。例如「1.5米」應該與「150釐米」相同,或者「20英寸」應該正確處理。
爲了能夠在不同的單位之間進行轉換,我需要數量特定的轉換常數。 我的想法是用一些靜態的轉換方法創建一個抽象基類。 那些應該使用類特定的靜態定義字典來完成他們的工作。 所以看看這個例子。
public class PhysicalQuantities
{
protected static Dictionary<string, double> myConvertableUnits;
public static double getConversionFactorToSI(String baseUnit_in)
{
return myConvertableUnits[baseUnit_in];
}
}
public class Length : PhysicalQuantities
{
protected static Dictionary<string, double> myConvertableUnits = new Dictionary<string, double>()
{
{ "in", 0.0254 }, { "ft", 0.3048 }
};
}
class Program
{
static void Main(string[] args)
{
Length.getConversionFactorToSI("in");
}
}
我認爲這給出了一個相當直觀的用法,並保持代碼緊湊,相當易讀和可擴展。但我當然遇到了引用的post所描述的相同問題。
現在我的問題是:我如何通過設計避免這個問題?
我想知道是否有定義爲'f(double)'的轉換會讓你陷入麻煩。這可能是一個轉換需要別的東西。 'Func'或'Func '可能會更好。 –
Hogan
2011-05-16 17:51:17
你可以只是從靜態去靜態 - 我不認爲你會失去很多 – 2011-05-16 17:55:06