下面的代码在 .Net 3.5 上运行良好:
PropertyInfo propertyInfo = typeof(int?).GetProperty("Value");
int? i = 5;
object o = propertyInfo.GetValue(i, null);
运行后,o
是 typeint
并具有 value 5
。这没关系。
当我在 .Net Compact Framework 3.5 上运行相同的代码时,我InvalidProgramException
在最后一行得到一个。
- 为什么会这样?
- 我能做些什么吗?
- 这是 .Net CF 中的错误吗?
我目前正在做的是确定Type
我正在处理的是否是 aSystem.Nullable<T>
并且我得到的属性具有名称"Value"
,然后明确处理该情况。但我想知道是否有更简单的解决方案。
我正在编写的代码解析表达式树(我们使用System.Linq.Expressions
在 .Net CF 上实现的单声道 dll)。当我使用反射来获取ConstantExpression
表示可空常量的 a 的值时,就会出现问题。