gpt4 book ai didi

c# - 这个反射代码有什么问题? GetFields() 返回一个空数组

转载 作者:IT王子 更新时间:2023-10-29 04:28:21 24 4
gpt4 key购买 nike

C#,网络 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<T>
{
private int myVar;

public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}


}

class ChildClass : BaseClass<ChildClass>
{
private int myVar;

public int OtherProperty
{
get { return myVar; }
set { myVar = value; }
}

}
}

最佳答案

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

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

或您想要的任何适当组合 - 但您确实需要至少指定 InstanceStatic 之一,否则它不会找到任何一个。您可以指定这两个字段,实际上也可以指定公共(public)字段,以获取所有内容:

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

关于c# - 这个反射代码有什么问题? GetFields() 返回一个空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1040803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com