интерпретация фрагментов кода - PullRequest
0 голосов
/ 16 августа 2011

Допустим, у меня есть приложение WinForm ... написано на C #.

Возможно ли это?

Ответы [ 4 ]

1 голос
/ 17 августа 2011

В конце концов, обратите внимание на Iron Python.

0 голосов
/ 16 августа 2011

Класс CSharpCodeProvider будет делать то, что вы хотите. Для (ОЧЕНЬ устаревшего, но все еще работающего с несколькими хитростями) примера его использования проверьте CSI .

0 голосов
/ 16 августа 2011

Если вы хотите рассмотреть нацеливание на среду выполнения Mono, тип Mono.CSharp.Evaluator предоставляет API для оценки выражений и операторов C # во время выполнения.

0 голосов
/ 16 августа 2011

C # не интерпретируется, поэтому в отличие от javascript или других интерпретируемых языков вы не можете сделать это изначально.Вы можете пройти четыре основных маршрута, перечисленных здесь в порядке от наименьшего к наиболее сложному ...

1) Предоставить фиксированный набор операций, которые может применить пользователь.Проанализируйте входные данные пользователя или предоставьте флажки или другие элементы пользовательского интерфейса, чтобы указать, что данная операция должна быть применена.

2) Предоставьте набор операций на основе подключаемого модуля или иным образом динамически определенный набор операций.Как и в случае с # 1, преимущество заключается в том, что не требуется специальных разрешений, таких как полное доверие.MEF может пригодиться для этого подхода: http://mef.codeplex.com/

3) Использовать динамическую среду компиляции c #, такую ​​как paxScript: http://eco148 -88394.innterhost.net / paxscriptnet / .Теоретически это позволит вам компилировать небольшие фрагменты кода c # по требованию.

4) Используйте операторы IL Emit для анализа кода и генерации ваших операций на лету.Это, безусловно, наиболее сложное решение, которое, вероятно, требует полного доверия и чрезвычайно подвержено ошибкам.Я не рекомендую его, если у вас нет очень смутных требований и искушенных пользователей.

...