0

我想用来GetProperties通过子类从父类获取属性,尽管对此进行了研究,但没有成功。

我尝试了下一个但没有任何结果:

PropertyInfo[] fields = t.GetProperties();
PropertyInfo[] fields1 = t.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy);
PropertyInfo[] propNames = t.BaseType.GetProperties( BindingFlags.Public | BindingFlags.Instance);

只是从子类中获取了属性,但没有从父类中获取属性。

课程

public class A: B
{
    public string a1 { get; set; }

    public string a2 { get; set; }

    public string a3 { get; set; }

    public string a4 { get; set; }
}

public class B
{
    public string b1;
}

使用此代码,我得到了A的属性,但没有得到B.

这段代码有效吗?我需要在某个地方配置一些东西吗?

4

1 回答 1

2

在你的声明中

public class B
{
    public string b1;
}

b1是一个字段,而不是一个属性。你应该要么

  • 使用GetFields()

    FieldInfo[] fields = t.GetFields();
    

    这将获得字段(如预期的那样) - 请注意,文档

    通常,您应该仅将字段用于具有私有或受保护可访问性的变量。

  • 创建b1一个属性,例如通过向{ get; set; }它添加访问器。

于 2019-02-27T08:33:16.660 回答