我在数据库表中存储了一些C#代码。
我在字符串中有基类的完整代码。
使用存储的C#代码,我在类中添加了一个名为m1
的方法,其中包含return <<some C# code>>;
(该方法始终返回object
,因此C#代码可以是:{ {1}},88 + 90
,"hello world"
等),将其保存到文件中并使用this.ToString()
进行编译,然后在我的程序中运行。
存储的C#代码可以使用基类中的一些方法。
这个方案非常有效。
现在,我将使用CSharpCodeProvider
来执行此操作,以避免编译步骤。
这是否可能,如果可行,该如何做?
答案 0 :(得分:1)
现在,我将使用
Reflection.Emit
来执行此操作,以避免编译步骤。
这对我来说没什么意义。如果您有要执行的源代码,则基本上有两个选项:
由于虚拟机和中间语言等原因,事情实际上并不像现在这么简单,但这些都是基本选择。
如果您不想使用CodeDOM,则会有两个选择(对应上面的两个选项):
Reflection.Emit
。Reflection.Emit
。选择1意味着您需要实现完整的C#编译器。选择2意味着你需要实现一半的C#编译器,以及你的内存结构的解释器。在这两种情况下,它都是一个巨大的项目,你不会真的“避免编译步骤”。