文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用 C# 动态编译代码和执行

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

时间:2011-05-06  来源:yaob

一个控制台例子, 演示了如何用 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();
}
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载