我正在尝试进行一些数据转换。不幸的是,大部分数据都是字符串,应该是 int 或 double 等等。.
所以我得到的是这样的东西:
double? amount = Convert.ToDouble(strAmount);
这种方法的问题是,如果 strAmount 是空的,如果它是空的,我希望它的金额为 null,所以当我将它添加到数据库中时,列将为 null。所以我最后写道:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
现在这个工作很好,但我现在有五行代码,而不是一行。这使得阅读更加困难,特别是当我有大量的列要转换时。
我认为我应该使用一个字符串类和泛型类的扩展来传递类型,这是因为它可以是 double、 int 或 long。所以我试了这个:
public static class GenericExtension
{
public static Nullable<T> ConvertToNullable<T>(this string s, T type) where T: struct
{
if (s.Trim().Length > 0)
{
return (Nullable<T>)s;
}
return null;
}
}
但是我得到了一个错误: 不能将类型‘ string’转换为‘ T’吗
有没有解决这个问题的方法? 我不是很熟悉使用泛型创建方法。