将字符串变量转换为实际类型的编码实践
本文关键字:类型 编码 变量 转换 字符串 | 更新日期: 2023-09-27 17:58:45
我有一个验证用户输入的服务。因此,在其他层中,我只是使用下面的语句来获得金额值,假设它已经被验证。
但是在编写单元测试用例时,我意识到这是失败的。所以,我的问题是,每当字符串值需要转换为实际类型时,我们是否需要始终尝试解析这些值。
var amountValue = Convert.ToDecimal(string.Format("{0}.{1}", view.amount, view.fraction))
您应该解析字符串,因为这正是您真正想要做的。
类型转换与解析不同。
想象一下,在美国,用点.
分隔小数,在欧盟,用逗号,
分隔小数。你真的不知道语言环境是如何区分小数之类的(尤其是日期是至关重要的,应该是PARSED而不是CONVERTED)。
也就是说,规则用户输入=>解析是非常直接的。
这里有一个基于泛型的转换方法:
public static void Convert<T>(string text, out T value, CultureInfo culture) where T : IConvertible
{
if (typeof(T).IsEnum)
{
value = (T) Enum.Parse(typeof (T), text, true);
}
else
{
value = (T)System.Convert.ChangeType(text, typeof(T), culture);
}
}