如何在父类中获取子属性?

时间:2010-10-02 12:49:02

标签: c# class lambda expression parent

你能回答我下一步怎么办吗? 如何使用Lambda做到这一点? 如果此方法不知道委托对象的类型,是否可以委托一些对象实例并使用其属性和方法?

class class_a {
    public string getChildData<T> (T dynamicInstance) {
        return dynamicInstance.prop;
    }
}

class class_b : a {
    public string prop = "prop_b";
}

class class_c : a {
    public string prop = "prop_c";
}

var inst_b = new b ();
var inst_c = new c ();
b.getChildData(b);
c.getChildData(c);

目的:在父类中获取子属性?

更新:使用反思 - http://forums.asp.net/t/1608839.aspx

谢谢,Artem

1 个答案:

答案 0 :(得分:5)

使用抽象/虚拟属性而不是字段:

abstract class ClassA
{
    public abstract string MyProperty
    {
        get;
    }

    public void DoIt()
    {
        Console.WriteLine(this.MyProperty);
    }
}

class ClassB : ClassA
{
    public override string MyProperty
    {
        get { return "prop_b"; }
    }
}

class ClassC : ClassA
{
    public override string MyProperty
    {
        get { return "prop_c"; }
    }
}

var instB = new ClassB();
var instC = new ClassC();
instB.DoIt();
instC.DoIt();

请参阅:Inheritance (C# Programming Guide)
请参阅:override (C# Reference)