C # Reflection - ошибка базового типа - PullRequest
0 голосов
/ 10 января 2012
Expression exp1 = new EqualsExpression(SearchContentProperty.Language, 1033);

Мне нужно сделать это в Reflection, Можете ли вы помочь мне

 public class SearchContentProperty
 { 
     public static IntegerPropertyExpression Language { get; }
 }

В Reflection я могу получить свойство, но его базовый тип - System.Reflection.MethodInfo.

Из-за этого я не могу использовать это свойство для аргумента другого класса.

Это исключение:

System.Reflection.MethodInfo невозможно преобразовать в MyClass Type. Явное преобразование также невозможно.

1 Ответ

4 голосов
/ 10 января 2012

Предполагая, что вы имеете в виду члена класса Language ... это не будет MethodInfo, это будет PropertyInfo. Если это не так, значит, ваш код не демонстрирует проблему.

PropertyInfo предоставит метод GetValue , который даст вам значение как объект. Чтобы предоставить MethodInfo другого класса, просто вставьте его в правильный порядковый номер object[], который будет представлять аргументы .

Вы не можете передать PropertyInfo напрямую MethodInfo, PropertyInfo не является заменой для значения свойства, оно дает вам доступ к значению свойства .

Обновление: Я ненавижу, когда это происходит. Я ответил на первый вопрос, но теперь вопрос изменился, и мой ответ выглядел совершенно неверно ...

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