c#执行字符串代码
时间: 2023-08-24 18:03:55 浏览: 47
在 C# 中,可以通过使用 System.CodeDom.Compiler 命名空间中的 CodeDomProvider 类来执行字符串代码。以下是一个简单的示例:
```csharp
using System;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
class Program
{
static void Main(string[] args)
{
string code = "Console.WriteLine(\"Hello, world!\");";
var provider = new CSharpCodeProvider();
var parameters = new CompilerParameters();
parameters.GenerateInMemory = true;
CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);
if (results.Errors.HasErrors)
{
Console.WriteLine("Compilation failed:");
foreach (CompilerError error in results.Errors)
{
Console.WriteLine(error.ErrorText);
}
}
else
{
Console.WriteLine("Compilation succeeded!");
var assembly = results.CompiledAssembly;
var type = assembly.GetType("DynamicClass");
var method = type.GetMethod("Main");
method.Invoke(null, null);
}
}
}
```
在此示例中,我们首先定义了要执行的代码字符串。然后,我们使用 CSharpCodeProvider 创建了一个编译器实例,并设置了一些编译参数。接下来,我们使用 CompileAssemblyFromSource 方法编译代码字符串,并将结果存储在一个 CompilerResults 对象中。
如果编译失败,则会输出错误消息。否则,我们可以从 CompiledAssembly 属性中获取编译后的程序集,并使用反射调用其中的 Main 方法,从而执行代码字符串中的代码。