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)처럼 검색하는 방법이 있습니까? 도움이나 제안. 미리 감사드립니다.
는'NumericUpDown.Text'가 구성원이 아닌, 그것은 속성입니다. 그리고 그것은 공개적입니다. 어떤 유형과 회원을 사용하고 싶은지 명확히하십시오. –
@SevaTitov 아마도 내 검색이 잘못되었습니다. 원래 _textBox를 찾았지만 추출 할 수 없었습니다. 그게 내가 원하는거야? 나는 TextBox를 찾고있다. 내가 리플렉션으로 검색 할 때 _textBox와 Text가 발견되었고 둘 다 TextBox라고합니다. 이것에 대한 어떤 불빛이라도? 지금 제가 참조 할 수있는 유일한 방법은 초점을 맞출 때입니다. 그런 다음 원본 소스를 가져 와서 텍스트 상자를 설정하는 경우이 방법이 가장 좋은 방법이 아닌 것 같습니다. – pqsk
확인. 나는 당신이 System.Windows.Forms에서 표준 NumericUpDown을 사용하고 있다고 생각했다. 다른 라이브러리를 사용하고있는 것 같습니다. 당신의 정의에서'Text'_is_ a 필드. 그리고 당신은 그것을 호출 할 수 있어야합니다'myType.InvokeMember ("Text", BindingFlags.GetField.BindingFlags.Instance | indingFlags.NonPublic, null, myInstance, null); ' –