2011-09-30 2 views
1

NumericUpDown에서 전용 멤버의 값 (텍스트)을 가져 오려고합니다.리플렉션 C# 4를 사용하여 개인 멤버의 값을 얻는 방법

public class NumericUpDown 
{ 
     private TextBox Text; 
     ... 
     ... 
} 

필드로 표시되지 않는 이유를 알지 못합니다. 어쩌면 누군가 필드와 회원 간의 차이를 분명히 할 수 있습니다. 이 필드라면 난 반사를 사용하여 내가하여 얻을 수있는 것으로 나타났습니다 :

typeof(NumericUpDown).GetField("Text", BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this) As TextBox 

하지만 내가하여 MemberInfo가 얻을 필요가 구성원 인 :

typeof(NumericUpDown).GetMember("Text", BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance).GetValue(0) 

이 값을 반환하지 않습니다 , 유형이있는 문자열. 어느 것이 합리적일까요? 왜냐하면 그것은 memberinfo의 값이기 때문에 실제 객체의 실제 값을 원합니다.

FieldInfo.GetValue (object)처럼 검색하는 방법이 있습니까? 도움이나 제안. 미리 감사드립니다.

+0

는'NumericUpDown.Text'가 구성원이 아닌, 그것은 속성입니다. 그리고 그것은 공개적입니다. 어떤 유형과 회원을 사용하고 싶은지 명확히하십시오. –

+0

@SevaTitov 아마도 내 검색이 잘못되었습니다. 원래 _textBox를 찾았지만 추출 할 수 없었습니다. 그게 내가 원하는거야? 나는 TextBox를 찾고있다. 내가 리플렉션으로 검색 할 때 _textBox와 Text가 발견되었고 둘 다 TextBox라고합니다. 이것에 대한 어떤 불빛이라도? 지금 제가 참조 할 수있는 유일한 방법은 초점을 맞출 때입니다. 그런 다음 원본 소스를 가져 와서 텍스트 상자를 설정하는 경우이 방법이 가장 좋은 방법이 아닌 것 같습니다. – pqsk

+1

확인. 나는 당신이 System.Windows.Forms에서 표준 NumericUpDown을 사용하고 있다고 생각했다. 다른 라이브러리를 사용하고있는 것 같습니다. 당신의 정의에서'Text'_is_ a 필드. 그리고 당신은 그것을 호출 할 수 있어야합니다'myType.InvokeMember ("Text", BindingFlags.GetField.BindingFlags.Instance | indingFlags.NonPublic, null, myInstance, null); ' –

답변

3

이것은 Silverlight를 사용하고 있기 때문입니다.

인용구 : Silverlight reflection cannot be used to bypass access level restrictions and (for example) invoke private members.

+0

재미 있고, 몰랐습니다. – Davy8

+0

이것은 좋은 것이고 나쁜 것입니다. 나는 왜 그것을 잡지 못하는지 알지만, 나는 지금 당장 해킹에 빠지거나 그 물건을 드러 낼 때까지 붙잡혀있다. 문제에 대해 밝혀 줘서 고마워. – pqsk

관련 문제