包括始终将代码更改为活动程序

cae*_*say 1 c# include

以下面的函数为例:

void Changing(string var1, string var2, string var3)
{
}
Run Code Online (Sandbox Code Playgroud)

我有代码写在.txt文件中,我希望它动态加载到该函数中.每次调用函数时,代码可能会有所不同.我怎么能这样做?

  1. 代码位于磁盘上的文本文件中
  2. 应该动态加载代码而不停止执行程序
  3. 代码应该与从头开始加载的代码无法区分,应该假装它总是在那里.
  4. 要执行的文件的位置包含在var1.

Mar*_*ell 5

你不能100%从头开始假装它在那里; 你将不得不解决它.

如果代码在外部文本文件中,您有许多选项:

  • 用于CSharpCodeProvider在运行时编译代码; 你需要添加额外的绒毛才能使它成为一个定义明确的类(可能是实现了一个通用接口); 然后使用反射创建该类型的实例; 是的 - 并且要注意你不能卸载等
  • 等到.NET 5.0并希望编译器即服务保持不变
  • 使用Mono,其中编译器即服务已经存在
  • 通过IronPython将外部文件作为(例如)python脚本运行(请注意,这会更改脚本语言)

我先看看最后一个选项(IronPython)......似乎是为这份工作做的.