Рейтинг:
2
Sergey Alexandrovich Kryukov
Извините, если я не совсем понимаю вашу идею, но вы обратили внимание на System.Delegate.GetInvocationList
? Он точно отвечает на вопрос "что сделал callme
указывает на". Однако это совсем не похоже на "обратную лямбду".
Может быть, вам нужно объяснить свою смутно выраженную идею в терминах того, чего вы хотите достичь, и какова будет конечная цель этого…
[РЕДАКТИРОВАТЬ]
Ответ на последующий вопрос/уточнение.
Речь идет о выражениях и деревьях выражений. Пожалуйста, смотрите http://msdn.microsoft.com/en-us/library/bb397951.aspx[^].
—СА
cechode
GetInvocationList не возвращает информацию desierd!
использование очень простое. Сделайте что-нибудь, основанное либо на имени последнего элемента в дереве, либо на значении атрибута ,который может существовать в этом элементе; ast. ( Имя в приведенном выше примере )
Sergey Alexandrovich Kryukov
Пожалуйста, ознакомьтесь с моим обновлением и нашей дискуссией с dasblinkenlight. Я думаю, все, что вы можете сделать, это работать в этом направлении.
Мой я спрашиваю вас, как вы видите свою конечную цель?
Чтобы дать вам представление: я разработал полноценную технологию для системы компьютерной алгебры. Последней и наиболее продвинутой реализацией был C#, и это было до деревьев выражений. Я сделал деревья выражений с нуля, что имеет серьезные преимущества (кроме совместимости с V.2.0: -). Я также могу работать как символическим, так и цифровым калькулятором.
Вы стремитесь развить что-то подобное?
--СА
Рейтинг:
0
dasblinkenlight
Это сложная проблема - для этого вам нужен декомпилятор. Есть намек на решение[^] который вы можете использовать в качестве шаблона, но он включает в себя много кодирования.
Sergey Alexandrovich Kryukov
Я думаю, что речь идет только о деревьях выражений. Пожалуйста, смотрите мое обновление к моему ответу (после [EDIT]).
--СА
dasblinkenlight
Из его примера видно, что он не имеет дела с деревьями выражений, потому что он получает Func[t] в качестве аргумента.
Sergey Alexandrovich Kryukov
Я вижу. Тем не менее, я думаю, что намерение состоит в использовании дерева выражений.
--СА
dasblinkenlight
Да, это практически единственный вариант. Вопрос в том, как вы его получите, если все, что у вас есть, - это скомпилированная функция. Парень по моей ссылке предлагает декомпилироваться в дерево выражений. Было бы намного проще, если бы OP мог использовать вместо этого дерево выражений, потому что код мог бы как исследовать дерево, так и создавать исполняемое выражение, вызывая Compile().
Sergey Alexandrovich Kryukov
Думаю, вы правы.
--СА
cechode
вот это я называю хорошим днем !
спасибо вам, ребята, между путем выражения и путем ExpressionVisitor я сегодня многому научился!!!
( также узнал, что только потому, что вы можете, не означает, что вы должны :) )
спасибо еще раз всем .