C# 字符串转代码运行
时间: 2023-06-28 22:05:33 浏览: 71
C# 字符串转为代码运行可以使用 `CSharpCodeProvider` 类,它是 .NET Framework 中的一个类库,可以将字符串编译成可执行的代码并运行。
下面是一个简单的示例代码:
```csharp
using System;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
namespace StringToCode
{
class Program
{
static void Main(string[] args)
{
string code = @"
using System;
namespace MyNamespace
{
public class MyClass
{
public void Run()
{
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
{
Type type = results.CompiledAssembly.GetType("MyNamespace.MyClass");
object instance = Activator.CreateInstance(type);
type.InvokeMember("Run", BindingFlags.InvokeMethod, null, instance, null);
}
Console.ReadKey();
}
}
}
```
这段代码首先定义了一个 C# 代码字符串,然后使用 `CSharpCodeProvider` 类编译这个字符串,并将编译后的程序集加载到内存中。如果编译过程中有错误,则会输出错误信息,否则就可以通过反射获取并执行其中的方法。
注意,由于这种方式可以执行任意代码,因此需要特别小心,确保不会引入安全漏洞。