因此,众所周知,.NET的SqlClient
类提供了一种从数据库获取数据的方法,该方法返回object
。虽然适当转换并不是一件大事,但我想写一个强类型的版本来返回一个正确类型的对象。所以,我写了下面的C#:如何将一个类型参数添加到我的DAL的ExecuteScalar实现?
public T ExecuteScalar<T>(IDbCommand cmd) where T : struct
{
cmd.Connection = this.conn;
object o = cmd.ExecuteScalar();
return (T)o;
}
这非常适用于布尔和DateTime
秒。但是,对于整数,它会抛出一个InvalidCastException
。所以,我做了任何带有Reflector副本的人都会做的事,并且插入Field<T>(this DataRow, string columnName)
扩展方法。我剔除了用来将值转换为请求的类型并进行测试的内部类。但是,对于值类型,代码只是return (T)value;
- 这当然没有帮助。
所以,我的问题:任何人有任何想法如何让我的方法正确地返回所有值类型和字符串的值?即使只是字符串,布尔值,DateTime
和int会很好。
在此先感谢!
仅供参考:`string`是一个引用类型。 – 2010-11-28 17:02:38
另外,如果查询未返回结果,则可能导致铸件错误。 – 2010-11-28 17:03:36