C#:获取从接口实现的类的属性

时间:2017-07-21 08:27:57

标签: c#-4.0 interface properties system.reflection

我一直在尝试在实现接口的类中获取属性。我的设计如下,

interface ABC
{
  string Name { get; set; }
}

public class BCD:ABC
{
 public string Name { get; set; }
 public string Age{ get; set; }
 public string Height{ get; set; }
 public string Weight{ get; set; }
}

现在使用Reflection我试过了,

main()
{
  ABC abcObj = new BCD();
  var typeOfObject = typeof(abcObj);
  var objectProperties = typeOfObject.GetProperties(BindingFlags.Public|BindingFlags.Instance);
}

我在objectproperties中得到的是ABC类中的属性。但是我也需要BCD类的属性。

有人可以为此提供帮助吗?

1 个答案:

答案 0 :(得分:2)

而不是使用typeof(因为它适用于类/接口名称),请尝试

var typeOfObject = abcObj.GetType(); 

获取实例的类型。

当我跑步时

ABC abcObj = new BCD();
var objectProperties = abcObj.GetType()
            .GetProperties(BindingFlags.Public | BindingFlags.Instance);

for (int i = 0; i < objectProperties.Length; i++)
{
    Console.WriteLine("{0} ({1})", objectProperties[i].Name, objectProperties[i].PropertyType);
}

我在控制台中收到以下内容:

  

名称(System.String)

     

年龄(System.String)

     

高度(System.String)

     

重量(System.String)