C# 动态编译
using Microsoft.CSharp;
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Program.CodeAssembly_1();
}
static void CodeAssembly_1()
{
CSharpCodeProvider cSharpCodeProvider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;
CompilerResults cs = cSharpCodeProvider.CompileAssemblyFromSource(parameters, GetCode_1("\"大狮子\""));
if (cs.Errors.Count>0)
{
Console.WriteLine(cs.Errors.ToString());
Console.ReadKey();
}
else
{
Assembly assembly = cs.CompiledAssembly;
Type AType = assembly.GetType("ConsoleApplication1.Class_1");
MethodInfo method = AType.GetMethod("Func");
Console.WriteLine(method.Invoke(null, null));
Console.ReadKey();
}
}
private static string GetCode_1(string para)
{
StringBuilder codes = new StringBuilder();
//引用
codes.Append("using System; ");
//命名空间定义
codes.Append("namespace ConsoleApplication1");
codes.Append("{");
//类定义
codes.Append(" public class Class_1");
codes.Append(" {");
//方法定义
codes.Append(" public static object Func()");
codes.Append(" {");
codes.Append(" return (" + para + ");");
codes.Append(" }");
codes.Append(" }");
codes.Append("}");
return (codes.ToString());
}
}
}
浙公网安备 33010602011771号