你能回答我下一步怎么办吗? 如何使用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
答案 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)