100分求解:“动态编译”问题
问题描述:
准备替换代码中以下语句:
sb.Append("              Console.WriteLine(\"动态编译\");");
假设外部有文本框TextBox1,如何在此处动态的执行TextBox1.text = "动态编译";
类似以下的概念,但以下这句显然不能执行:
sb.Append("              TextBox1.text = \"动态编译\";");
注意,是编译的时候写入,不是依靠编译后返回字符串。
------------------------------------------源码------------------------------------------
using System;
using System.Reflection;
using System.Globalization;
using Microsoft.CSharp;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Text;
namespace ConsoleApplication1
{
     public class Program
     {
         static void Main(string[] args)
         {
             CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();
             ICodeCompiler objICodeCompiler = objCSharpCodePrivoder.CreateCompiler();
             CompilerParameters objCompilerParameters = new CompilerParameters();
             objCompilerParameters.ReferencedAssemblies.Add("System.dll");
             objCompilerParameters.GenerateExecutable = false;
             objCompilerParameters.GenerateInMemory = true;
             CompilerResults cr = objICodeCompiler.CompileAssemblyFromSource(objCompilerParameters, GenerateCode());
             if (cr.Errors.HasErrors)
             {
                 Console.WriteLine("编译错误:");
                 foreach (CompilerError err in cr.Errors)
                 {
                     Console.WriteLine(err.ErrorText);
                 }
             }
             else
             {
                 Assembly objAssembly = cr.CompiledAssembly;
                 object objHelloWorld = objAssembly.CreateInstance("DynamicCodeGenerate.HelloWorld");
                 MethodInfo objMI = objHelloWorld.GetType().GetMethod("OutPut");
                 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 void OutPut()");
             sb.Append(Environment.NewLine);
             sb.Append("         {");
             sb.Append(Environment.NewLine);
             sb.Append("              Console.WriteLine(\"动态编译\");");
             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;
         }
     }
}
------解决方案---------