Using system; <br/> using system. collections. generic; <br/> using system. LINQ; <br/> using system. text; <br/> using system. codedom. compiler; <br/> using Microsoft. CSHARP; <br/> using system. reflection; <br/> using system. io; </P> <p> namespace wpfapplication2 <br/>{< br/> class codedriver <br/>{< br/> private string prefix = "using system; "+" public static class driver "+" {"+" public static void run () "+ "{"; <br/> private string Postfix = "}" + "}"; </P> <p> Public String complieandrun (string input, out bool haserror) <br/>{< br/> haserror = false; <br/> string returndata = NULL; </P> <p> compilerresults Results = NULL; <br/> using (csharpcodeprovider provider = new csharpcodeprovider () <br/>{< br/> compilerparameters Options = new compilerparameters (); <br/> options. generateinmemory = true; </P> <p> stringbuilder sb = new stringbuilder (); <br/> Sb. append (prefix); <br/> Sb. append (input); <br/> Sb. append (postfix); </P> <p> Results = provider. compileassemblyfromsource (options, sb. tostring (); <br/>}</P> <p> // If a compilation error occurs <br/> If (results. errors. haserrors) <br/>{< br/> haserror = true; <br/> stringbuilder errormsg = new stringbuilder (); </P> <p> foreach (compilererror e in results. errors) <br/>{< br/> errormsg. appendformat ("{0} {1}", E. line, E. errortext); <br/>}</P> <p> returndata = errormsg. tostring (); <br/>}< br/> else <br/>{< br/> textwriter temp = console. out; <br/> stringwriter writer = new stringwriter (); <br/> console. setout (writer); <br/> type = results. compiledassembly. getType ("driver"); <br/> type. invokemember ("run", bindingflags. invokemethod | bindingflags. static | bindingflags. public, null); <br/> console. setout (temp); <br/> returndata = writer. tostring (); <br/>}</P> <p> return returndata; </P> <p >}< br/>}</P> <p>