【发布时间】:2010-09-23 23:41:55
【问题描述】:
我正在尝试为类型转换创建一个通用方法,该方法获取一个对象和要转换的对象类型。
通过使用Convert.ChangeType(),我可以做我想做的事,但运行时会花费太多时间。制作我想要的泛型类的最佳方法是什么。
我的旧代码是这样的;
public static ConvertTo<T>(object data) where T : struct // yes the worst variable name!
{
// do some controls...
return Convert.ChangeType(data, typeof(T));
}
编辑: 澄清一下……
例如;我已经执行了我的查询,它返回了一个 DataRow。并且有一列输入为十进制,我想将其转换为长。如果我调用此方法,则将十进制转换为 long 需要花费很多时间。
并且该方法的T类型只能是值类型。我的意思是“T:结构”
【问题讨论】:
-
您能否更具体地说明“运行时需要太多时间”。您是否对其进行了分析以检查它是否是此代码?
-
是的,我发现问题出在该代码中。 “运行时花费了太多时间”,我的意思是 40 次调用此方法总共需要 8 秒。
-
40 次调用需要 8 秒?我觉得这很难相信,除非你有一些需要很长时间的自定义类型转换器。请提供一个简短但完整的示例程序。