C# 如何获取子类的属性值

C# 如何获取子类的属性值,c#,reflection,inheritance,C#,Reflection,Inheritance,我有一个从基类(基类)继承的类(后代1)。子类的实例被传递到以基类为参数的方法中。然后使用反射调用对象上的属性 public class BaseClass { } public class Descendant1 : BaseClass { public string Test1 { get { return "test1"; } } } public class Processor { public string Process(BaseClass bc, string

我有一个从基类(基类)继承的类(后代1)。子类的实例被传递到以基类为参数的方法中。然后使用反射调用对象上的属性

public class BaseClass { }

public class Descendant1 : BaseClass
{
    public string Test1 { get { return "test1"; } }
}


public class Processor
{
    public string Process(BaseClass bc, string propertyName)
    {
        PropertyInfo property = typeof(BaseClass).GetProperty(propertyName);
        return (string)property.GetValue(bc, null); 
    } 
}
我的问题是。在过程中方法中,是否可以找出对象的真实情况(后代1),然后声明该类型的对象(可能使用反射),并将基类参数强制转换为该对象,然后对其执行反射特技


谢谢。

我不确定我是否理解你的问题,但也许你在想这样的事情:

        public string Process(BaseClass bc, string propertyName)
        {
            PropertyInfo property =  bc.GetType().GetProperty(propertyName);
            return (string)property.GetValue(bc, null);
        }

GetType()获取bc的实际类型(当您传递后代1时,它将是后代1而不是基类)。

这正是我的意思。谢谢。