题
我似乎已经下了兔子洞。我想从ADO .NET数据集的数据转换为可空类型。起初,我以为,直投(INT?)会做到这一点。我多么天真了。错,严重错误。现在我想要写一个通用的转换器,但我越来越挂了语法。这是2005年如此 - 有人一定已经解决了这个问题。你有没有?
在挂断的是,当我尝试在转换器我得到一个语法错误使用可空类型上的约束:
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);
}
}
在目标使用泛型做所有转换具有单个方法。这是可能的,或者我必须写一些。
解决方案
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);
}
不隶属于 StackOverflow