バインディング式のソース プロパティ タイプを調べようとしています。これを行うのは、UpdateSourceExceptionFilterを使用して、一般的な「変換できませんでした」よりも有用なエラー メッセージを提供したいからです。
.NET 4.5 では、ResolvedSourceとResolvedSourcePropertyNameをリフレクションと共に使用して、次のようなソース プロパティ タイプを取得します。
PropertyInfo sourceProperty = expr.ResolvedSource.GetType().GetProperty(expr.ResolvedSourcePropertyName);
Type propertyType = sourceProperty.PropertyType;
これはうまくいきます。ただし、これらの BindingExpression プロパティは両方とも .NET 4.5 で導入されたばかりで、私はまだ 4.0 を使用しています (Windows XP のため、実際には更新できません)。
では、.NET 4.0 でこれを行う良い方法はありますか? リフレクションを使用して内部SourceItem
およびSourcePropertyName
プロパティを取得するか、Worker
それらの値を取得するためにプライベートを取得することを考えましたが、内部/プライベート プロパティまたはフィールドへのアクセスは避けたいと思います (また、これには信頼について何かをする必要があると思いますか?どのような影響がありますか? ?)。