我遇到类似的问题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