C#学习教程:这个reflection代码出了什么问题? GetFields()返回一个空数组分享


这个reflection代码出了什么问题? GetFields()返回一个空数组

C#,Net 2.0

这是代码(我拿出了所有特定于域的东西,它仍然返回一个空数组):

using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ChildClass cc = new ChildClass(); cc.OtherProperty = 1; FieldInfo[] fi = cc.GetType().GetFields(); Console.WriteLine(fi.Length); Console.ReadLine(); } } class BaseClass { private int myVar; public int MyProperty { get { return myVar; } set { myVar = value; } } } class ChildClass : BaseClass { private int myVar; public int OtherProperty { get { return myVar; } set { myVar = value; } } } } 

无参数GetFields()返回公共字段。 如果您想要非公开的,请使用:

 cc.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic); 

或者你想要的任何合适的组合 – 但你确实需要指定InstanceStatic中的至少一个,否则它也找不到。 您既可以指定两个,也可以指定公共字段,以获取所有内容:

 cc.GetType().GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); 

由于该字段是私有的,因此您需要使用允许您指定BindingFlags.NonPublic的GetFields()重载。

要使其工作,请将其更改为:

 FieldInfo[] fi = cc.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance); 

您需要指定您想要私有(NonPublic)字段

改成:

上述就是C#学习教程:这个reflection代码出了什么问题? GetFields()返回一个空数组分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 FieldInfo[] fi = cc.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance); 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/960227.html

发表评论

邮箱地址不会被公开。 必填项已用*标注