微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 什么是例外? InvalidCastException的

在遗留应用程序中,我们有一个sqlDataReader.以下字段使用位字段创建InvalidCastException.

public static T GetValueOrNull<T>(this IDataReader reader,string column)
{
     int ordinal;
     if(!string.IsNullOrEmpty(column) && !reader.Isdbnull(reader.Getordinal(column)))
          if(int.TryParse(reader.Getordinal(column).ToString(),out ordinal))
               return (T)reader.GetValue(ordinal);

      return default(T);
}

奇怪的是,(T)reader.GetValue(ordinal)确实指定了一个有效的类型.它指定了一个错误,但仍然会发生错误.我不完全确定为什么.

如果我执行GetType();它确实显示布尔类型.我还检查过以确保它是线程安全的.

解决方法

代码在位字段上失败的原因(与布尔值相关)是由推断类型引起的.基础数据类型不是bool而是bool?

一旦模型反映了可以为空的布尔值,代码就按预期工作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐