Извлечение входных аргументов из лямбда-выражений - PullRequest
0 голосов
/ 08 июля 2011

У меня есть метод, который принимает LambdaExpression в качестве параметра

    public void SomeMethod(Expression<Func<SomeObject, bool>> predicate)
    { }

внутри этого метода я хотел бы извлечь значения членов и аргументов из выражения Body. Возможно ли это и как этого достичь?

Метод может быть вызван так:

    SomeMethod(t=> t.Id == 3 && t.Name=="Name");

или

    SomeMethod(t=> t.Id.Equals(3));

или

    SomeMethod(t=> t.Id > 3 || t.Id = 1);

и т.д.. Вы получаете точку.

1 Ответ

2 голосов
/ 08 июля 2011

Решение, которое вы ищете, называется Expression Tree Visitor . Используя его, вы можете использовать члены и аргументы лямбда-выражений.

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

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