我正在解析大量的xml内容并填充DTO以提交给合作伙伴端点。 xml内容存储在我定期阅读并发送的文本文件中。无论如何,我现在发现自己和Funcs一样:
Func<string, int> ConvertInt= (p) => String.IsNullOrEmpty(p) ? 0 : Convert.ToInt32(p);
我检查我正在读取的元素是否不包含值,如果它没有发送默认值,即在整数情况下,则为0.我有类似的 double 和 DateTime?,无论如何转换这个,所以我可以说一个扩展方法可以处理所有类型,即整数,双打和日期时间?同样,我正在进行此转换的原因是因为我们说DTO期望的某些整数值,但不是必需的,我不想尝试将空字符串转换为它等等...如果没有Date值我只想返回null,因为DTO接受可以为空的日期时间,因此我编写了funcs,我正在寻找合并。
答案 0 :(得分:8)
您应该查看TypeConverter类:http://msdn.microsoft.com/en-us/library/system.componentmodel.typeconverter.aspx
protected X Convert<X>(string value)
{
X val = default(X);
var tc = TypeDescriptor.GetConverter(typeof(X));
if (!string.IsNullOrEmpty(value) && tc.CanConvertFrom(typeof(string)))
{
val = (X)tc.ConvertFromString(value);
}
return val;
}