原创 

C# 动态编译之 hello world

分类:    453人阅读    IT小君  2015-01-09 17:40
using System;
using System.Reflection;
using System.Globalization;
using Microsoft.CSharp;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Text;

namespace QuickSharp
{
    public class Program
    {
        private static void Main()
        {
              // 1.CSharpCodePrivoder 
            CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();
            // 3.CompilerParameters 
            CompilerParameters objCompilerParameters = new CompilerParameters();
            objCompilerParameters.ReferencedAssemblies.Add("System.dll");
            objCompilerParameters.GenerateExecutable = false;
            objCompilerParameters.GenerateInMemory = true;
            // 4.CompilerResults 
            CompilerResults cr = objCSharpCodePrivoder.CompileAssemblyFromSource(objCompilerParameters, GenerateCode());
            if (cr.Errors.HasErrors)
            {
                Console.WriteLine("编译错误:");
                foreach (CompilerError err in cr.Errors)
                {
                    Console.WriteLine(err.ErrorText);
                }
            }
            else
            {
                // 通过反射,调用HelloWorld的实例 
                Assembly objAssembly = cr.CompiledAssembly;
                object objHelloWorld = objAssembly.CreateInstance("DynamicCodeGenerate.HelloWorld");
                MethodInfo objMI = objHelloWorld.GetType().GetMethod("OutPut");
                Console.WriteLine(objMI.Invoke(objHelloWorld, null));
            }
            Console.ReadLine();
        }
         static string GenerateCode()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("using System;");
            sb.Append(Environment.NewLine);
            sb.Append("namespace DynamicCodeGenerate");
            sb.Append(Environment.NewLine);
            sb.Append("{");
            sb.Append(Environment.NewLine);
            sb.Append("    public class HelloWorld");
            sb.Append(Environment.NewLine);
            sb.Append("    {");
            sb.Append(Environment.NewLine);
            sb.Append("        public string OutPut()");
            sb.Append(Environment.NewLine);
            sb.Append("        {");
            sb.Append(Environment.NewLine);
            sb.Append("             return "Hello world!";");
            sb.Append(Environment.NewLine);
            sb.Append("        }");
            sb.Append(Environment.NewLine);
            sb.Append("    }");
            sb.Append(Environment.NewLine);
            sb.Append("}");
            string code = sb.ToString();
            Console.WriteLine(code);
            Console.WriteLine();
            return code;
        }
    }
}
点击广告,支持我们为你提供更好的服务

HTML5 Canvas竖直流动线条背景动画特效

响应式时尚单品在线商城网站模板

js+css3抽奖转盘旋转点餐代码

响应式太阳能能源公司网站模板

html5 canvas进度条圆环图表统计动画特效

网页设计开发公司网站模板

HTML5现代家居装潢公司网站模板

响应式咖啡饮品宣传网站模板

html5图标下拉搜索框自动匹配代码

小众时尚单品在线电子商务网站模板

中小型创意设计服务公司网站模板

jQuery右端悬浮带返回顶部特效

html5 svg夜空中星星流星动画场景特效

有机水果蔬菜HTML5网站模板

css+js实现的颜色渐变数字时钟动画特效

css鼠标跟随文字模糊特效

html5 canvas彩色碎片组合球形旋转动画特效

canvas炫酷鼠标移动文字粒子特效

HTML5数字产品服务公司网站模板

现代时尚家具公司网站模板

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务