有没有一种方法可以在应用程序中解析/运行C#,就像脚本一样

本文关键字:运行 脚本 一样 方法 一种 有没有 应用程序 | 更新日期: 2023-09-27 18:19:45

我目前正在编写一些代码,我想知道是否可以从我的应用程序中执行一些C#代码。我给你一个想法,比如说我想给用户一个文本框,让他们键入一些代码并点击"开始",我想让他们询问水果列表,然后浏览每个水果并输出它。例如:

var fruitList = getFruit();
foreach(var fruit in fruitList)
{
   print(fruit.Name);
}

我希望能够完成这项工作,并将一个Fruit对象列表分配给fruitList,解析器应该能够将getFruit()绑定到我在c#代码中编写的方法。打印也是如此,它应该将其等同于我编写的打印函数,该函数将其输出到文本框。

现在我知道C#不是一个脚本,它是经过编译的,我在谷歌上搜索了很多,但实际上什么都找不到。对我来说,我唯一的选择似乎是自己写一个小的语言解析器——这听起来很有趣——但我以前做过,我知道这是一项艰巨的工作。因此,这只是一个初步检查,看看在我投入长期工作之前是否确实存在一些解决方案。

那么,我的程序员同事们,你们知道有什么可以帮助我的吗?

如果没有,没问题,我感谢所有的反馈,无论是提示、建议还是类似文章的链接http://blogs.msdn.com/b/ericwhite/archive/2010/06/29/writing-a-recursive-descent-parser-using-c-and-linq.aspx或解决方案。

问候,
Adam

编辑:我已经设法得到了一个有效的例子。注意,这段代码有点乱,因为我已经在测试应用程序中粘贴了一些其他代码,但它可以工作。基本上,我把代码编译成DLL,然后加载DLL,找到类型,找到方法,然后调用它。这也非常快!我不想给你发垃圾邮件,所以完整的代码如下:

http://imdsm.blogspot.com/2012/01/compile-c-into-assembly-then-load-it.html

感谢所有在这里发帖的人。你帮我省去了几天的困惑!

有没有一种方法可以在应用程序中解析/运行C#,就像脚本一样

你是说像这里的屏幕截图一样?

我们在我们的软件HeuristLab中使用了这一点,您可以将ProgrammableOperator添加到运算符图中,该运算符图将执行您在自定义算法中键入的代码。

在System.CodeDom命名空间中,您已经具备了动态编译代码所需的全部功能。您可以从编译中创建程序集,获取程序集的类型并执行它们的代码。

我认为微软的新编译器项目正是您想要的。有了它,您可以像运行脚本一样运行C#。

项目"Roslyn"

看看Roslyn是否能提供帮助,它仍处于CTP状态。

您可以使用CSharpCodeProvider

或者,您可以使用脚本语言并在应用程序中运行解释器Ex IronRuby