リフレクションを使用してプライベートメソッドを取得する際に問題があります。 BindingFlags.NonPublicとBindingFlags.Instanceを使用しても、動作しません。 HandleClientDrivenStatePropertyChangedは、CreateRadioPropertyInstancesメソッドと同じクラスで定義されています。.Netはリフレクションでプライベートメソッドを取得できません
class Program
{
static void Main(string[] args)
{
RadioPropertiesState state = new RadioPropertiesState();
}
}
internal class RadioPropertiesState : BaseRadioPropertiesState
{
}
internal class BaseRadioPropertiesState
{
public BaseRadioPropertiesState()
{
CreateRadioPropertyInstances();
}
private void CreateRadioPropertyInstances()
{
// get the method that is subscribed to the changed event
MethodInfo changedEventHandlerInfo = GetType().GetMethod(
"HandleClientDrivenStatePropertyChanged",
BindingFlags.NonPublic | BindingFlags.Instance |
BindingFlags.IgnoreCase);
}
private void HandleClientDrivenStatePropertyChanged
(object sender, EventArgs e)
{
}
}
GetMethodはnullを返します。 何が問題なのですか?
は、あなたが正確にそれが宣言されたタイプではなく、派生型にGetMethod
を呼び出す必要がプライベートメンバーを取得するには
Strangeは、.NETでうまく動作します。4. BindingFlagsで試してみてください。 –
もう1つの推測は、一部のアクセス許可が不足している可能性があるということです。 'class X'をどのように使って起動しますか?それはsmtと同様のドメインまたはリモートソースから読み込まれますか? –
問題を示す短い*完全な*プログラムを表示してください。それはうまくいくはずです - もちろん、このメソッドが何らかの形で派生クラスで呼び出されると、それは見つからないでしょう... –