У меня есть метод, который принимает экземпляр Expression
. Я хочу получить фактический тип данных, возвращаемый конкретным экземпляром выражения, а не объект
.
Я могу заставить его работать для прямых ссылок на свойства, поэтому, если я передаю выражение x => x.IntegerProperty
, я могу получить ссылку на тип для целого числа. Этот подход требует преобразования его в MemberExpression.
Однако я не могу заставить его работать с произвольными выражениями. Например, если выражение x => x.IntegerProperty.ToString ()
, я хочу получить ссылку на тип для строки. Я не могу скомпилировать это в MemberExpression, и если я просто .Compile ()
его и проверю тип возвращаемого значения, я получу «объект».
Как мне посмотреть на конкретный экземпляр выражения и определить фактический тип возвращаемого значения?