Извлечь дерево выражений из действия - PullRequest
3 голосов
/ 10 ноября 2008

Я только начинаю играть с Linq Expressions и врезался в стену. Мне нужно создать дерево выражений из действия. К сожалению, я не могу получить Действие в качестве выражения, вот с чем мне приходится работать:

public void Something(Action action){}

Мне нужен доступ к телу действия для извлечения переменных и значений.

1 Ответ

4 голосов
/ 10 ноября 2008

Action не является Expression; это просто делегат (который мог быть выражением в какой-то момент, мог быть лямбда-выражением, а может и не быть).

Чтобы сделать это работоспособным, вам потребуется рефакторинг:

public void Something(Expression<Action> action) {...}

Кроме того, лямбда-выражения C # 3.0 / .NET 3.5 не очень хорошо работают для выражений Action -типа. Вы очень ограничены в том, что вы можете выразить. Func выражения типа работают лучше. В .NET 4.0 (CTP) здесь гораздо больше гибкости , хотя все еще не ясно, что язык (C # 4.0) будет предлагать в виде лямбд.

В принципе, я не уверен, что вы можете (удобно) делать то, что вы надеетесь, используя Expression.

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