Guest User

Untitled

a guest
Jan 18th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. [HttpPost]
  2. public ActionResult Index(string code)
  3. {
  4. var reportWriter = new StringWriter();
  5. var settings = new CompilerSettings();
  6. var printer = new ConsoleReportPrinter(reportWriter);
  7. var reports = new Report(printer);
  8. var eval = new Evaluator(settings, reports);
  9.  
  10. var model = new CodeViewModel();
  11. model.Code = code;
  12. eval.Run(code);
  13. model.Result = reportWriter.ToString();
  14.  
  15. return View("Index", model);
  16. }
  17.  
  18. using System;
  19. public class MyClass
  20. {
  21. public void DoSomething()
  22. {
  23. Console.WriteLine("hello from DoSomething!");
  24. }
  25. }
  26.  
  27. {interactive}(1,2): warning CS0105: The using directive for `System' appeared previously in this namespace
  28. {interactive}(1,8): (Location of the symbol related to previous warning)
  29. {interactive}(11,1): error CS1530: Keyword `new' is not allowed on namespace elements
  30. {interactive}(11,4): error CS1525: Unexpected symbol `MyClass', expecting `class', `delegate', `enum', `interface', `partial', or `struct'
  31.  
  32. var reportWriter = new StringWriter();
  33. var settings = new CompilerSettings();
  34. var printer = new ConsoleReportPrinter(reportWriter);
  35. var reports = new Report(printer);
  36. var eval = new Evaluator(settings, reports);
  37.  
  38. eval.Run(code);
  39.  
  40. eval.Run(@"
  41. var output = new System.IO.StringWriter();
  42. Console.SetOut(output);
  43. new MyClass().DoSomething();");
  44.  
  45. var model = new CodeViewModel();
  46. model.Code = code;
  47.  
  48. if (reports.Errors > 0)
  49. model.Result = reportWriter.ToString();
  50. else
  51. model.Result = (string) eval.Evaluate("output.ToString();");
  52.  
  53. return View("Index", model);
Add Comment
Please, Sign In to add comment