Insert/Inject 一个对象到字符串代码

Insert/Inject an Object to string code

我有一个在运行时使用 System.CodeDom.CodeCompileUnit 动态生成的 C# 代码,我使用 Microsoft.CSharp.CSharpCodeProvider 编译它,我想要的是向这个字符串插入一个已经定义和初始化的变量(一个 ArrayList)所以我可以在编译前使用它,我应该怎么做?

您需要生成用于创建此变量并用您拥有的值填充它的代码。或者您可以为您生成的方法之一添加一个参数,并在运行时传递它。没有神奇的方法可以为您做到。

CodeDom 不完整、过时且过时。现在你应该使用 T4(如果你想要代码作为文本)或表达式和 IL(如果你想执行动态生成的代码)。如果您使用 Expessions,插入变量是微不足道的。使用 T4,只需几行代码,但也需要手动完成。