我好像掉进了兔子洞。我想将 ADO .NET 数据集中的数据转换为 Nullable 类型。起初我假设直接 Actor (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);
}
关于.net - ADO.NET 疯狂和可空类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/870830/