c# - 几个函数的通用替换

标签 c# .net generics

我正在解析大量 xml 内容并填充 DTO 以提交给合作伙伴端点。 xml 内容存储在我定期阅读并发送的文本文件中。无论如何,我现在发现自己拥有这样的 Funcs:

Func<string, int> ConvertInt= (p) => String.IsNullOrEmpty(p) ? 0 : Convert.ToInt32(p);

我检查我正在读取的元素是否不包含值,如果它不发送默认值,即在整数情况下,0。我有类似的 doubleDateTime?,是否有转换它的方法,所以我可以说一个扩展方法可以处理所有类型,即整数、 double 和 DateTimes?同样,我进行此转换的原因是因为让我们说一些 DTO 期望但不是必需的整数值,我不想尝试将空字符串转换为它等等......如果没有日期值,我只想返回一个空值,因为 DTO 接受可为空的日期时间,因此我编写了函数,并希望合并。

最佳答案

你应该看看 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;
}

关于c# - 几个函数的通用替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129370/

相关文章:

java - ArrayList 上的一般数组创建错误

java - Java 中的有界通配符

c# - 将 TFS WorkItem Assigned-To 和 Created-By 解析为电子邮件地址

c# - 包含 unicode 域的电子邮件正则表达式

c# - 在继承类中使用锁的最佳实践是什么

c# - 在c#中将字符串拆分为字符串数组而不带分隔符

c# - 正则表达式,定位一个字符,但如果它是某个单词的一部分则不定位

c# - 如何在MEF中编写某个部分?

.net - 解决 WCF AddressFilter 不匹配中的配置错误

java - 动态类型检查匹配类型参数