我想作以下功能工作:如何將數據行字段轉換爲泛型類型?
T GetRowVal<T>(System.Data.DataRow dr, string fieldName)
{
var type=typeof(T);
var val = dr[fieldName];
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
if (val == DBNull.Value || val == null) return null;
return (T)val;
}
當然,它並不想返回null即使它應該在這種情況下所允許的T類沒有限制。 我該如何糾正這個功能? (或者如果有更好的方法來做到這一點,請讓我知道)。
因爲知道,這種方法我會用:
T GetRowVal<T>(System.Data.DataRow dr, string fieldName)
{
var type=typeof(T);
var val = dr[fieldName];
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
if (val == DBNull.Value || val == null) return default(T);
return (T)val;
}
新的解決方案:)
return dr.Field<T>(fieldName);
不知道它在性能方面更好,但可能看起來清潔器。
實施,可以在MS Github上找到:
這似乎是一個不錯的選擇:) – Jean