需要访问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:'序列不包含匹配项 元素”
答案 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 属性的使用。