c# string转代码运行
时间: 2023-07-04 14:06:32 浏览: 45
C# 中的 `System.CodeDom.Compiler` 命名空间提供了将字符串代码编译为可执行代码的功能。以下是一个简单的示例:
```csharp
using System;
using System.CodeDom.Compiler;
using System.Reflection;
using Microsoft.CSharp;
class Program
{
static void Main(string[] args)
{
string code = "using System; class MyClass { public void SayHello() { Console.WriteLine(\"Hello World!\"); } }";
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;
CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);
if (results.Errors.HasErrors)
{
foreach (CompilerError error in results.Errors)
{
Console.WriteLine(error.ErrorText);
}
}
else
{
Assembly assembly = results.CompiledAssembly;
Type type = assembly.GetType("MyClass");
object instance = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod("SayHello");
method.Invoke(instance, null);
}
Console.ReadLine();
}
}
```
上述示例将字符串代码 `"using System; class MyClass { public void SayHello() { Console.WriteLine(\"Hello World!\"); } }"` 编译为程序集,并在其中创建 `MyClass` 类的实例,最后调用 `SayHello` 方法输出 "Hello World!"。