只是想知道是否有人知道如何解决此错误?我还使用了TypeCode.
,但仍然没有运气。谢谢
case typeof(Nullable<int>).ToString(): //<----- error is here
if ((!object.ReferenceEquals(value, DBNull.Value)))
{
return value;
}
else
{
return null;
}
这是开关
public static object HandleDBNull(object value, System.Type _type)
{
switch (Type.GetTypeCode(_type))
{
再次感谢您的帮助
答案 0 :(得分:1)
您在switch
语句中使用的类型必须与case
语句中的类型相匹配,目前您正在将TypeCode
与string
进行比较
TypeCode
枚举仅包含基元类型的值,而其他所有枚举类型都为TypeCode.Object
。因此,您无法获得TypeCode
类型的特定 Nullable<int>
。
答案 1 :(得分:0)
最终,typeof(Nullable<int>)
不是TypeCode
,其字符串表示形式不是TypeCode
。没有TypeCode
代表Nullable<int>
具体。
您可以使用Nullable.GetUnderlyingType(type)
检查某些内容是否为Nullable<T>
并同时获取T
(如果没有,则返回null
),您可以使用{ {1}}关于结果,但是:我怀疑在你的情况下,在所有中使用Type.GetTypeCode
可能是一个错误,只需检查类型本身({{1} })可能会更好。