【发布时间】:2012-01-09 12:19:39
【问题描述】:
我目前正在编写一些代码,我想知道是否可以从我的应用程序中执行一些 C# 代码。我会给你一个想法,假设我想给用户一个文本框并让他们输入一些代码并点击 go,我希望他们询问水果列表,然后遍历每个水果并输出它..示例:
var fruitList = getFruit();
foreach(var fruit in fruitList)
{
print(fruit.Name);
}
我希望能够通过这个并将 Fruit 对象列表分配给fruitList,解析器应该能够将 getFruit() 绑定到我用 c# 代码编写的方法。打印也是如此,它应该等同于我编写的将其输出到文本框的打印函数。
现在我知道 C# 不是脚本,它是经过编译的,而且我在 Google 上进行了很多搜索,但实际上找不到任何东西。对我来说,我唯一的选择似乎是自己编写一个小语言解析器——这听起来很有趣——但我以前做过,我知道这很辛苦。所以这只是一个初步检查,看看在我长期承诺之前是否确实存在一些解决方案。
那么,我的程序员伙伴们,你们知道什么可以帮助我吗?
如果不是,没问题,我感谢所有反馈,无论是提示、建议、文章链接(如 http://blogs.msdn.com/b/ericwhite/archive/2010/06/29/writing-a-recursive-descent-parser-using-c-and-linq.aspx 或解决方案)。
问候,
亚当
编辑:我设法得到了一个工作示例。请注意,此代码有点混乱,因为我已将一些其他代码粘贴到测试应用程序中,但它可以工作。基本上,我将代码编译成 DLL,然后加载 DLL、查找类型、查找方法并调用它。这也太他妈快了吧!我不想向您发送垃圾邮件,因此完整代码如下:
http://imdsm.blogspot.com/2012/01/compile-c-into-assembly-then-load-it.html
感谢所有在这里发帖的人。你让我免了几天的困惑!
【问题讨论】: