c# - 如何获取后代类的属性值

标签 c# reflection inheritance

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

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); 
    } 
}

我的问题是这样的。在Process方法中,是否可以弄清楚对象到底是什么(Descendant1),然后声明该类型的对象(可能使用Reflection)并将BaseClass参数转换为它,然后进行反射杂技吗?

谢谢。

最佳答案

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

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

bc.GetType() 获取 bc 的真实类型(当您传递 Descendant1 时,它将是 Descendant1 而不是 BaseClass)。

关于c# - 如何获取后代类的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466352/

相关文章:

C#:更改按钮背景颜色无效

C#计算int数组中值的平均值

ruby - block 和对象

C++如何用下面的例子实现条件继承

c# - SQL Server 的输出参数未打印到 Web 表单

c# - 我如何在 C# visual studios 中定义预处理器符号

java - 无需高级扫描仪即可获取 Java 扫描仪输入

C# 反射 : What is the difference between FieldInfo. SetValue() 和 FieldInfo.SetValueDirect()?

java - 如果存在注释,我该如何执行某些功能?

java - 构造函数中的继承