Приведение обратно к производному классу из базового класса с использованием Reflections - PullRequest
0 голосов
/ 31 марта 2012

Вот что я пытаюсь сделать:

BaseClass base = (BaseClass)
AppDomain.CurrentDomain.CreateInstance("DerivedClassDLL","DerivedClass");

Однако есть свойство, которое мне нужно получить от DerivedClass для отображения и т. Д. BaseClass не имеет этого свойства, и я не могу его реализовать.

Так что как-то мне нужно привести его обратно к DerivedClass, чтобы добраться до него, НО на DerivedClass не ссылаются, поэтому я не могу достичь его, это тип легко в отличие от BaseClass, который имеет ссылку, поэтому я могу использовать его.

Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 31 марта 2012

В этом случае у вас есть два варианта:

  • использовать динамический
  • использовать отражение

Использование динамического

BaseClass foo = (BaseClass) AppDomain.CurrentDomain
                                     .CreateInstance("DerivedClassDLL","DerivedClass");
dynamic derived = foo;
string someProperty = derived.SomeProperty;

Использование отражения

string someProperty = (string)foo.GetType()
                                 .GetProperty("SomeProperty")
                                 .GetValue(foo, null);
0 голосов
/ 31 марта 2012

Поскольку у вас есть экземпляр производного класса, этот бит отражения должен сделать это:

var myPropertyInfo = typeof(instanceOfDerivedClass).GetProperty("DerivedClassProperty");
var myPropertyValue = myPropertyInfo.GetValue(instanceOfDerivedClass) as [property type];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...