【发布时间】:2011-06-10 17:44:46
【问题描述】:
如何编写 C# 代码来编译和运行动态生成的 C# 代码。周围有例子吗?
我所追求的是动态构建一个(或多个)C# 类并在运行时运行它们。我希望生成的类与其他非动态的 C# 类交互。
我见过生成 exe 或 dll 文件的示例。我不是在那之后,我只是想让它在内存中编译一些 C# 代码然后运行它。例如,
所以这是一个非动态类,它将在我的 C# 程序集中定义,并且只会在编译时更改,
public class NotDynamicClass
{
private readonly List<string> values = new List<string>();
public void AddValue(string value)
{
values.Add(value);
}
public void ProcessValues()
{
// do some other stuff with values
}
}
这是我的动态课程。我的 C# 代码会生成这个类并运行它,
public class DynamicClass
{
public static void Main()
{
NotDynamicClass class = new NotDynamicClass();
class.AddValue("One");
class.AddValue("two");
}
}
所以结果是最后我的非动态代码会调用 ProcessValues 并且它会做一些其他的事情。动态代码的重点是允许我们或客户在软件中添加自定义逻辑。
谢谢。
【问题讨论】:
-
编译“插件”程序集并在运行时加载这些插件而不是动态编译东西是否可行?
-
对,是的,我之前为另一个项目做过。这是可能的,但不是我们在这个项目中真正追求的。我会考虑的,谢谢。