Как получить значение свойства по классу-потомку - PullRequest
2 голосов
/ 21 января 2009

У меня есть класс (Descendant1), который наследуется от базового класса (BaseClass). Экземпляр класса-потомка передается в метод, который принимает 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, а затем выполнить акробатику отражения на это?

Спасибо.

1 Ответ

6 голосов
/ 21 января 2009

Я не уверен, что понимаю ваш вопрос, но, может быть, вы думаете о чем-то вроде этого:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...