挂断的是,当我尝试在转换器上使用Nullable类型作为约束时,我得到语法错误:
public class NullableDBConversion
{
public static T Convert<T>(object testValue) where T : Nullable<T>
{
if (testValue is DBNull)
{
return new Nullable<T>();
}
return new Nullable<T>((T)testValue);
}
}
目标有一种方法,使用泛型来完成所有转换。这是可能的还是我必须写几个。
答案 0 :(得分:7)
T : Nullable<T>
作为一种约束并不合理 - 想想T
必须是什么;它本身不能为空。你可以:
where T : Nullable<U> where U : struct
但这有点模糊。我认为让T
成为非可空类型更容易,只需引用Nullable<T>
即可。我想你想要这个:
public static Nullable<T> Convert<T>(object testValue) where T : struct
{
return testValue is DBNull ? null : new Nullable<T>((T)testValue);
}