以下のコードは、.Net 3.5 で問題なく動作します。
PropertyInfo propertyInfo = typeof(int?).GetProperty("Value");
int? i = 5;
object o = propertyInfo.GetValue(i, null);
実行後、o
はタイプint
で、値は です5
。どちらでも構いません。
.Net Compact Framework 3.5 で同じコードを実行するとInvalidProgramException
、最後の行にエラーが発生します。
- なぜそれが起こるのですか?
- 私にできることはありますか?
- これは .Net CF のバグですか?
私が現在行っていることは、Type
私が扱っている が でSystem.Nullable<T>
あり、取得しているプロパティに名前があるかどうかを判断し、"Value"
そのケースを明示的に処理することです。しかし、もっと簡単な解決策があるかどうか知りたいです。
私が書いているコードは、式ツリーを解析します ( System.Linq.Expressions
.Net CF で実装する mono dll を使用します)。この問題は、リフレクションを使用しConstantExpression
て null 許容定数を表す a の値を取得すると発生します。