Определение, передано ли конкретное значение или выражение? - PullRequest
1 голос
/ 18 апреля 2009

Есть ли способ определить, передается ли значение в качестве ссылки, например, x.Age или конкретное значение. например. 20 вроде так.

value(x => x.Age)

или

value(x => 20)

Приветствия

1 Ответ

4 голосов
/ 18 апреля 2009

Если value () принимает Func <,> или другой тип делегата, то вы в принципе не можете сказать. Функция была скомпилирована: в лучшем случае вы можете посмотреть на IL, используя отражение, и попытаться выяснить это эвристически.

Если значение () принимает выражение, вы можете пройтись по дереву выражений. Это может быть сложным в общем случае, но для простых случаев, подобных вашему, было бы достаточно найти выражение MemberExpression вместо ConstantExpression.

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