A.B*_*uin 4 c# generics ado.net extension-methods datarow
我尝试使用此通用方法扩展DataRow对象:
public static T? Get<T>(this DataRow row, string field) where T : struct
{
if (row.IsNull(field))
return default(T);
else
return (T)row[field];
}
Run Code Online (Sandbox Code Playgroud)
它的做工精细当T int,decimal,double,等.
但是当我尝试使用字符串时,我有这个错误:
"类型'字符串'必须是不可为空的值类型,以便在泛型类型或方法'System.Nullable'中将其用作参数'T'"
我怎么能纠正这个?
我知道字符串不是结构,但如果字符串字段是DBNull,我不会返回null.
我认为这就是你想要的:
public static T? GetValue<T>(this DataRow row, string field) where T : struct
{
if (row.IsNull(field))
return new T?();
else
return (T?)row[field];
}
public static T GetReference<T>(this DataRow row, string field) where T : class
{
if (row.IsNull(field))
return default(T);
else
return (T)row[field];
}
Run Code Online (Sandbox Code Playgroud)