以下面的函数为例:
void Changing(string var1, string var2, string var3) { }
我有代码写在.txt
文件中,我希望它动态加载到该函数中.每次调用函数时,代码可能会有所不同.我怎么能这样做?
代码位于磁盘上的文本文件中
应该动态加载代码而不停止执行程序
代码应该与从头开始加载的代码无法区分,应该假装它总是在那里.
要执行的文件的位置包含在var1
.
Marc Gravell.. 5
你不能100%从头开始假装它在那里; 你将不得不解决它.
如果代码在外部文本文件中,您有许多选项:
用于CSharpCodeProvider
在运行时编译代码; 你需要添加额外的绒毛才能使它成为一个定义明确的类(可能是实现了一个通用接口); 然后使用反射创建该类型的实例; 是的 - 并且要注意你不能卸载等
等到.NET 5.0并希望编译器即服务保持不变
使用Mono,其中编译器即服务已经存在
通过IronPython将外部文件作为(例如)python脚本运行(请注意,这会更改脚本语言)
我先看看最后一个选项(IronPython)......似乎是为这份工作做的.
你不能100%从头开始假装它在那里; 你将不得不解决它.
如果代码在外部文本文件中,您有许多选项:
用于CSharpCodeProvider
在运行时编译代码; 你需要添加额外的绒毛才能使它成为一个定义明确的类(可能是实现了一个通用接口); 然后使用反射创建该类型的实例; 是的 - 并且要注意你不能卸载等
等到.NET 5.0并希望编译器即服务保持不变
使用Mono,其中编译器即服务已经存在
通过IronPython将外部文件作为(例如)python脚本运行(请注意,这会更改脚本语言)
我先看看最后一个选项(IronPython)......似乎是为这份工作做的.