c#错误&;特定类型转换无效&;即使通过检查objectToCast是ExpectedType来验证它是有效的

本文关键字:ExpectedType objectToCast 有效 检查 验证 错误 类型转换 无效 | 更新日期: 2023-09-27 18:17:32

基本上,这就是我在代码中所做的(替换通用名称)。

Type fooObjType = fooObj.GetType();
PropertyInfo fooProp = fooObjType.GetProperty("FooProperty");
if (fooProp == null || !fooProp.CanRead || !fooProp.CanWrite)
    return;
var fooVal = fooProp.GetValue(fooObj); //<-- Also tried using "object" instead of "var" here.
long longVal = 0;
if (fooVal is long || fooVal is int || fooVal is short)
    longVal = (long)fooVal;//<-- Error on this cast.
//More code for checking if fooVal is Nullable and has a value, and assigning it appropriately for those cases.

正如你所看到的,我非常明确地检查了fooVal确实是一个可强制转换(隐式地)到long的类型,然而c#继续抱怨"特定强制转换无效"。

有人知道这是怎么回事吗?

c#错误&;特定类型转换无效&;即使通过检查objectToCast是ExpectedType来验证它是有效的

使用转换构造(虽然我不确定为什么使用entVal而不是fooVal)。Convert.ToInt64 (entVal)