【发布时间】:2017-08-02 01:04:43
【问题描述】:
我试图调出一个参数列表(来自两个不同的系列),以协调细微的参数命名差异,并想弄清楚它是什么类型的变量。我尝试了以下代码:
switch (One_Param.StorageType)
{
case StorageType.Double: { Double_Params.Add(One_Param); break; }
case StorageType.Integer: { Integer_Params.Add(One_Param); break; }
case StorageType.String: { String_Params.Add(One_Param); break; }
}
这并没有给我我需要的东西,因为布尔值和线宽一样存储为整数。
正确的代码是:
switch (Bogus_Param.Definition.ParameterType)
{
case ParameterType.Length: { Correct_Param.Set(Bogus_Param.AsDouble()); break; }
case ParameterType.Number: { Correct_Param.Set(Bogus_Param.AsDouble()); break; }
case ParameterType.Integer: { Correct_Param.Set(Bogus_Param.AsInteger()); break; }
case ParameterType.Text: { Correct_Param.Set(Bogus_Param.AsString()); break; }
case ParameterType.YesNo: { Correct_Param.Set(Bogus_Param.AsInteger()); break; }
}
请注意,还有其他几个可用的 ParameterType,包括 Volume。这种结构允许访问“实际”存储类型,只要您在 .Set 中提供有效值,就可以很好地工作。所以你仍然为 YesNo 和 Integer ParameterType 提供一个整数。
【问题讨论】: