0

デリゲート オブジェクトの methodptr プロパティにアクセスしようとすると、次のエラーが発生します。

"System.Delegate._methodPtr' is not accessible in this context because it is 'Friend'

、この値にアクセスして変数に割り当てる方法はありますか?

4

1 に答える 1

0

この値にアクセスして変数に割り当てる方法はありますか?

リフレクション1を使用して値を取得できます。ただし、おそらくこれを行いたくないでしょう。この値にはFriend理由があります。これは実装の詳細であり、フレームワークの消費者として直接アクセスする権利はありません。動作するか、突然壊れる可能性があります (たとえば、Microsoft がライブラリの更新を配布した場合)。コードは、Mono などの代替 .NET 実装でも機能しません。

特に、このメンバーは MSDNに記載されていないため、その存在や動作は信頼できません。


1次のようにすればうまくいきます。

Dim delegateType = yourDelegateObject.GetType()
Dim field = delegateType.GetField("_methodPtr", _
        BindingFlags.Instance Or BindingFlags.NonPublic)
Dim methodPtr = DirectCast(field.GetValue(yourDelegateObject), IntPtr)

私はモノしか持っておらず、(前述のように)ここでは動作しないため、テストされていません。

于 2013-01-30T14:59:26.827 に答える