.net 4 - запустить код из строки - в C # / F # / IronRuby / IronPython - PullRequest
1 голос
/ 03 июня 2010

Какие способы есть в .net для запуска кода из строки?

Console.WriteLine(Compile("1 + 2 * 3"));    // results is 7.

Какие еще есть варианты?

  • C # - Скомпилировать код во время выполнения?
  • IronRuby / IronPython?
  • F #?

Ответы [ 2 ]

2 голосов
/ 03 июня 2010

Итак, динамические языки, такие как IronRuby и IronPython, позволяют очень легко делать то, что вы хотите. Создайте движок сценария и выполните строку. Легко, как это.

C #, возможно, используя Code DOM ... но он каждый раз компилирует код в DLL. Это дорогое поведение и может привести к увеличению объема памяти вашего приложения с течением времени, если вы не сделаете некоторые сложные вещи с доменами приложений. Это МОЖЕТ быть сделано, но я действительно предпочитаю использовать IronRuby или IronPython по этому подходу. Это намного проще.

Наконец, в C # 5.0 мы ожидаем увидеть компилятор как управляемый сервис. Это означает, что вы сможете запустить eval ("// c # code") в будущем ... но он пока недоступен.

Надеюсь, это поможет!

0 голосов
/ 03 сентября 2011

Оформить заказ NCalc. Это DLL, которую вы можете включить в свое приложение, и она поддерживает несколько математических и логических операций. http://ncalc.codeplex.com/

...