您的位置:首页 > 编程语言 > C#

C# 动态编译代码实现

2010-11-20 13:50 495 查看
public class BLProgram
    {
        protected const string PROCESS_METHOD_CODE =   @"
		 using System;
		 public class Program
		 {{
				public static void Main()
				{{
					 string parameter = ""{0}""; 
					 string result = ""{1}"";
					 Detection(parameter,result);
			    }}
				static void Detection(string testParameters,string testResults)
				{{
					Console.WriteLine(testParameters+""-""+testResults);
				}}
		 }}";  
        /// <summary>
        /// 判断程序题是否正确
        /// </summary>
        /// <param name="strCode"></param>
        /// <returns></returns>
        public bool IsCProgramRight(string strCode)
        {
            string id = Guid.NewGuid().ToString();
            List<string> output = new CodeRun().Run(strCode, id);
            string strOutpt = "";
            for (int i = 0; i < output.Count; i++)
            {
                strOutpt += output[i];
            }
            return (strOutpt == "对/n");
        }
        /// <summary>
        /// 输出执行结果
        /// </summary>
        /// <param name="strCode"></param>
        /// <returns></returns>
        public string GetOutPut(string strCode)
        {
            string id = Guid.NewGuid().ToString();
            List<string> output = new CodeRun().Run(strCode, id);
            string strOutpt = "";
            for (int i = 0; i < output.Count; i++)
            {
                strOutpt += output[i];
            }
            return strOutpt;
        }
        /// <summary>
        /// 生成程序
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        public string GetProgramStyle(string parameter, string result)
        {
            StringBuilder processMethod = new StringBuilder();
            processMethod.AppendFormat(PROCESS_METHOD_CODE, parameter, result);
            return processMethod.ToString();
        }
        /// <summary>
        /// 判断程序是否能生成成功
        /// </summary>
        /// <param name="strCode"></param>
        /// <returns></returns>
        public bool BianYI(string strCode)
        {
            string id = Guid.NewGuid().ToString();
            List<string> output = new CodeRun().Run(strCode, id);
            string strOutpt = "";
            for (int i = 0; i < output.Count; i++)
            {
                strOutpt += output[i];
            }
            return (strOutpt == "对/n" || strOutpt == "错/n");
        }
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: