我似乎已经下了兔子洞。我想从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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top