Reflection 如何使用反射C#4获取私有成员的值

Reflection 如何使用反射C#4获取私有成员的值,reflection,c#-4.0,private,member,Reflection,C# 4.0,Private,Member,我正在尝试从NumericUpDown获取私有成员的值(文本) public class NumericUpDown { private TextBox Text; ... ... } 我不明白为什么它没有显示为一个字段。也许有人可以澄清字段和成员之间的区别。如果这是一个领域,我发现使用反射可以通过以下方式获得: typeof(NumericUpDown).GetField("Text", BindingFlags.FlattenHierarchy

我正在尝试从NumericUpDown获取私有成员的值(文本)

 public class NumericUpDown
 {
      private TextBox Text;
      ...
      ...
 }
我不明白为什么它没有显示为一个字段。也许有人可以澄清字段和成员之间的区别。如果这是一个领域,我发现使用反射可以通过以下方式获得:

 typeof(NumericUpDown).GetField("Text", BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this) As TextBox
但它是会员,因此我必须通过以下方式获取会员信息:

 typeof(NumericUpDown).GetMember("Text", BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance).GetValue(0)
这不会返回值,而是返回类型为的字符串。这很有意义,因为这是memberinfo的值,但我想要实际对象的实际值


有没有像FieldInfo.GetValue(对象)这样的检索方法?任何帮助或建议。提前感谢。

这是因为您正在使用Silverlight

引述:

NumericUpDown.Text
不是成员,而是属性。这是公开的。请澄清您要使用的类型和成员。@SevaTitov可能是我的搜索错误。我最初发现了一个_文本框,但我无法提取它。这就是我要找的吗?我正在搜索文本框。当我用反射搜索时,我发现了_textBox和Text,它们都说它们是textBox。有什么线索吗?现在我唯一能引用它的方法就是当它聚焦的时候。然后在事件中,我获取原始源代码并在那里设置文本框,但这似乎不是最好的方法。我以为您使用的是System.Windows.Forms中的标准NumericUpDown。显然你正在使用其他的图书馆。在您的定义中,文本是一个字段。您应该能够使用call
myType.InvokeMember(“Text”,BindingFlags.GetField | BindingFlags.Instance | indingFlags.NonPublic,null,myInstance,null)检索该文件@SevaTitov Silverlight。我尝试了typeof(NumericUpDown)。InvokeMember(“Text”,BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,null,ctrl,null);这给了我一个例外,我不明白。我也找到了一个图表,我不疯狂,文本框是文本和_文本,都是私有的。有趣的是,我不知道这是好是坏。我知道为什么我抓不到它,但我现在只能用我的黑客工具,或者直到他们把那个东西暴露出来。谢谢你对这个问题的解释。