在遗留应用程序中,我们有一个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();它确实显示布尔类型.我还检查过以确保它是线程安全的.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。