C# 字符串转代码运行
时间: 2023-06-28 10:05:33 浏览: 47
C# 字符串转代码运行可以通过使用 C# 编译器来实现。以下是一个简单的示例:
```csharp
using System;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
string code = "using System; class MyClass { public static 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)
{
Console.WriteLine("编译错误:");
foreach (CompilerError error in results.Errors)
{
Console.WriteLine(error.ErrorText);
}
}
else
{
Assembly assembly = results.CompiledAssembly;
Type type = assembly.GetType("MyClass");
MethodInfo method = type.GetMethod("SayHello");
method.Invoke(null, null);
}
Console.ReadKey();
}
}
```
在上面的示例代码中,我们首先定义了一个字符串变量 `code`,其中包含我们要运行的代码。然后,我们使用 `CSharpCodeProvider` 创建了一个编译器实例,并设置了编译参数。接下来,我们调用 `provider.CompileAssemblyFromSource` 方法,将代码作为参数传递给它,并编译代码。如果编译出错,则输出错误信息。如果编译成功,则获取编译后的程序集,从中获取类型和方法信息,并调用该方法。
请注意,这种方法存在一定的安全风险,因为您可以执行任何代码,包括恶意代码。因此,建议在使用此方法时格外小心。