리플렉션을 사용하여 전용 메서드를 가져 오는 데 문제가 있습니다. BindingFlags.NonPublic 및 BindingFlags.Instance를 사용하더라도 작동하지 않습니다. HandleClientDrivenStatePropertyChanged는 CreateRadioPropertyInstances 메서드와 동일한 클래스에 정의되어 있습니다.. 리플렉션으로 개인 메서드를 얻을 수 없습니다.
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을 반환합니다. 무엇이 문제 일 수 있습니까?
[편집 코드]
.NET에서 잘 작동합니다. BindingFlags로 재생 해보십시오. –
또 다른 추측은 일부 사용 권한이 없어서 발생할 수 있다는 것입니다. 'class X '를 어떻게 사용합니까? 다른 도메인이나 smt와 유사한 원격 소스에서로드 되었습니까? –
문제를 보여주는 짧지만 완전한 * 프로그램을 보여주십시오. 그것은 괜찮을 것입니다 - 물론이 방법이 파생 된 클래스에서 호출되는 것으로 끝나면 찾지 못할 것입니다 ... –