Copy codeThe Code is as follows :/*
* Use C # To dynamically compile and execute code
* Author: yaob
*/
Static void Main (string [] args)
{
// Compiler
CodeDomProvider cdp = CodeDomProvider. CreateProvider ("C #");
// Compiler Parameters
CompilerParameters cp = new CompilerParameters ();
Cp. ReferencedAssemblies. Add ("System. dll ");
Cp. GenerateExecutable = false;
Cp. GenerateInMemory = true;
// Compilation result
CompilerResults cr = cdp. CompileAssemblyFromSource (cp, HelloWorld ());
If (cr. Errors. HasErrors) Console. WriteLine ("Compilation error! ");
Else
{
// Compiled assembly
Assembly ass = cr. CompiledAssembly;
// Obtain the SayHello method in the HelloWorld class.
Type type = ass. GetType ("HelloWorld. HelloWorld ");
MethodInfo mi = type. GetMethod ("SayHello ");
// Execute
Mi. Invoke (null, null );
}
}
// Dynamically constructed code
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 ();
}