2

我的应用程序中有一个当前程序集,我想将外部 cs 文件中的一个类添加到该程序集中。有可能做到吗?我想像插件一样使用它。现在我正在尝试使用:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();

和激活器,但没有成功。我的应用程序正在使用 Roslyn,所以也许它可以做到。任何想法将不胜感激。

编辑:它的下一个问题是:我可以使用外部文件(带有类的cs文件)从这个文件中获取实例,但是类的构造函数需要从当前组装中引用sceneManager。那么是否可以向 Roslyn 发送类似的引用并从中获取类的实例?

4

2 回答 2

5

您不能修改已加载的现有程序集。

相反,您可以将代码编译为新程序集(使用 Roslyn、CodeDOM、Sigil 或类似库)并使用反射加载该程序集。

于 2013-03-08T14:08:44.567 回答
3

'.cs' 文件本身就是text。如果不通过某种途径编译它,你就无法对它做任何事情。但是不可以:您不能在运行时将额外的类添加到程序集中。您可以通过或类似方法在运行时编译代码CSharpCodeProvider,并加载生成的程序集。不过,这很麻烦。根据上下文,如果您需要在运行时从脚本中做很多事情,像 Iron Python 这样的工具可能更可取。

于 2013-03-08T14:10:33.033 回答