在C#中實現動態代碼執行的方法可以使用反射和編譯器服務。以下是一種簡單的方法:
using System;
using System.CodeDom.Compiler;
using System.Reflection;
public class DynamicCodeExecutor
{
public static void Execute(string code)
{
var provider = new CSharpCodeProvider();
var 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.GetTypes()[0];
MethodInfo method = type.GetMethod("Execute");
method.Invoke(null, null);
}
}
}
public class DynamicCode
{
public static void Execute()
{
Console.WriteLine("Dynamic code executed!");
}
}
string code = @"
using System;
public class DynamicCode
{
public static void Execute()
{
Console.WriteLine(""Dynamic code executed!"");
}
}";
DynamicCodeExecutor.Execute(code);
通過上述方法,可以動態編譯并執行C#代碼。請注意,動態執行代碼可能存在安全風險,務必謹慎使用。