作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在遗留应用程序中,我们有一个 SqlDataReader
。以下字段创建一个带有 bit
字段的 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)
确实分配了一个有效类型。它分配了一个 false
,但错误仍然发生。我不完全确定为什么。
如果我执行 GetType();
它确实会显示 Boolean
类型。我还进行了检查以确保它是线程安全的。
最佳答案
代码在与 bool 值 相关的位字段 上失败的原因是推断类型。底层数据类型不是 bool
而是 bool?
。
一旦模型反射(reflect)了一个可为 null 的 bool 值,代码就会按预期工作。
关于c# - 什么异常(exception)?无效的CastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632808/
我正在尝试使用以下代码将 TreeSet 存储在 SharedPreferences 中: Set chemicalValuesSet = new TreeSet<>();
spring boot 第一次启动时,jooq 运行良好。但如果我更改代码并在 spring boot 上下文刷新后,然后我遇到了类转换异常的麻烦。问题是在同一个类上抛出异常。 我的启动配置是: @A
我是一名优秀的程序员,十分优秀!