使用反射从基类中获取子类

时间:2013-08-15 17:57:31

标签: .net inheritance reflection

说我有以下类模型:

Class1 -> BaseClass

Class2 -> BaseClass

Class1具有

的属性
public string Property1 { get; set; }
public int Property2 { get; set; }

Class2具有

的属性
public double Property1 { get; set; }
public string Property2 { get; set; }
public int Property3 { get; set; }

我想在BaseClass中创建一个方法,它将为已经实例化的子类中的所有属性创建一个哈希。我如何使用反射获取子类的属性?

由于.Net不允许多重继承,我认为假设只有一个子类(或一行子类),我会安全。

1 个答案:

答案 0 :(得分:3)

听起来你只是在寻找使用GetType(),这将给出当前对象的执行时类型:

foreach (var property in this.GetType().GetProperties())
{
    var value = property.GetValue(this, null);
    // Whatever
}

Class1的实例上调用时,即使代码位于Property1,也应显示Property2BaseClass