【问题标题】:Including always changing code into an active program包括始终将代码更改为活动程序
【发布时间】:2010-12-04 04:01:03
【问题描述】:

以如下函数为例:

void Changing(string var1, string var2, string var3)
{
}

我在.txt 文件中编写了代码,我希望将其动态加载到该函数中。每次调用函数时,代码都可能不同。我怎么能这样做?

  1. 代码在磁盘上的文本文件中
  2. 应在不停止程序执行的情况下动态加载代码
  3. 代码应该与从头加载的代码没有区别,应该假装它一直在那里。
  4. 要执行的文件的位置包含在var1 中。

【问题讨论】:

  • 这闻起来像家庭作业,或者一种精心制作的方法会造成注入漏洞。

标签: c# include


【解决方案1】:

你不能 100% 假装它从一开始就在那里;你将不得不解决它。

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

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

我会先看看最后一个选项(IronPython)......似乎适合这份工作。

【讨论】:

    【解决方案2】:

    您可以试试Luaboo 等脚本语言。我还没有实现这些,但已经看到类似的东西在 java 中工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 2015-07-10
      相关资源
      最近更新 更多