为啥获取私有属性一无所获? (c#) [关闭]

Posted

技术标签:

【中文标题】为啥获取私有属性一无所获? (c#) [关闭]【英文标题】:Why does it get nothing that Getting private Properties? (c#) [closed]为什么获取私有属性一无所获? (c#) [关闭] 【发布时间】:2021-03-17 05:11:42 【问题描述】:
public class A
    public Info m_Info = new Info();
    Main()
    
        Console.WriteLine(m_Info.Property_Count());
    
    public class Info

        protected int i_Id;
        protected string s_Name; 

        public int Property_Count()
            System.Reflection.PropertyInfo[] data = this.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);

            foreach(var item in data)
                Console.WriteLine(item.Name);
            return data.Length;
        
    

我正在尝试获取私有或受保护的属性~ 但是data.Length总是返回0,听上去好像什么都没有,为什么呢?

【问题讨论】:

关于类的字段和属性:tutorialspoint.com/csharp/csharp_properties.htm 和 tutorialsteacher.com/csharp/csharp-class 【参考方案1】:

您的班级没有任何properties。这些:

protected int i_Id;
protected string s_Name; 

fields。您可以将它们更改为属性:

protected int i_Id  get; set; 
protected string s_Name  get; set; 

或者你可以使用GetFields:

System.Reflection.FieldInfo[] data = this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);

【讨论】:

以上是关于为啥获取私有属性一无所获? (c#) [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C#中继承类为啥可以通过属性访问基类的私有字段。

为啥当我重载数组运算符时我的私有变量为零? [关闭]

c#的属性和反射,大约是啥回事

C# 在运行时获取组件的值?

为啥 C# 数组没有 Count 属性? [复制]

protobuf-net 不使用私有设置器序列化 C# 属性