Как получить дочернее свойство внутри родительского класса? - PullRequest
0 голосов
/ 02 октября 2010

Не могли бы вы ответить мне, как это сделать дальше, пожалуйста? Как это сделать с лямбдой? Можно ли делегировать некоторый экземпляр объекта и использовать его свойства и методы, если этот метод не знает тип делегированного объекта?

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

Цель : получить дочернее свойство внутри родительского класса?

Обновление : использовать Reflection - http://forums.asp.net/t/1608839.aspx

Спасибо, Артем

1 Ответ

5 голосов
/ 02 октября 2010

Используйте абстрактное / виртуальное свойство вместо поля:

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

См .: Наследование (Руководство по программированию в C #)
См .: переопределение (C # Reference)

...