C# 动态编译 使用 C# 动态编译代码和执行的代码

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

C# 动态编译 使用 C# 动态编译代码和执行的代码

  2021-03-18 我要评论
想了解使用 C# 动态编译代码和执行的代码的相关内容吗,在本文为您仔细讲解C# 动态编译的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C#,动态编译,下面大家一起来学习吧。
复制代码 代码如下:

/*
* 使用 C# 动态编译代码和执行
* 作者: yaob
*/

static void Main(string[] args)
{
// 编译器
CodeDomProvider cdp = CodeDomProvider.CreateProvider("C#");

// 编译器的参数
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.dll");
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;

// 编译结果
CompilerResults cr = cdp.CompileAssemblyFromSource(cp, HelloWorld());

if (cr.Errors.HasErrors) Console.WriteLine("编译出错!");
else
{
// 编译后的程序集
Assembly ass = cr.CompiledAssembly;

// 得到HelloWorld类中的SayHello方法
Type type = ass.GetType("HelloWorld.HelloWorld");
MethodInfo mi = type.GetMethod("SayHello");

// 执行
mi.Invoke(null, null);
}
}

// 动态构建的代码
static string HelloWorld()
{
StringBuilder sbCode = new StringBuilder();
sbCode.AppendLine("using System;");
sbCode.AppendLine("namespace HelloWorld");
sbCode.AppendLine("{");
sbCode.AppendLine(" class HelloWorld");
sbCode.AppendLine(" {");
sbCode.AppendLine(" public static void SayHello()");
sbCode.AppendLine(" {");
sbCode.AppendLine(" Console.WriteLine(\"Hello~ World~!\");");
sbCode.AppendLine(" }");
sbCode.AppendLine(" }");
sbCode.AppendLine("}");
return sbCode.ToString();
}

猜您喜欢

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们