无法访问字段内的字段

时间:2020-04-27 07:39:32

标签: c#

需要访问m_fullDescriptor以获得值,但是我无法访问下图所示的另一个字段中的字段。

使用下面的代码获取成功获取的字段,但是当我在pmCS中搜索m_pm或m_fullDescriptor时找不到它们。

我如何访问它?

var specFields = con.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Single(pi => pi.Name == "pmCS");

然后我尝试如下访问“ m_pm”;

var specFields = con.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Single(pi => pi.Name == "pmCS").GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Single(pi => pi.Name == "m_pm");

它抛出一个错误;

System.InvalidOperationException:'序列不包含匹配项 元素”

enter image description here

1 个答案:

答案 0 :(得分:0)

GetFields()返回FieldInfo []。 FiledInfo的类型为RtFieldInfo。您需要的是字段的实际类型,因此您应该像这样使用FieldInfo类的FieldType属性:


var specFields = con.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Single(pi => pi.Name == "pmCS").FieldType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Single(pi => pi.Name == "m_pm");

注意 FieldType 属性的使用。