public void ClassicModeTest() { var script = new CSharpScriptExecution() { SaveGeneratedCode = true, CompilerMode = ScriptCompilerModes.Classic }; script.AddDefaultReferencesAndNamespaces(); //script.AddAssembly("Westwind.Utilities.dll"); //script.AddNamespace("Westwind.Utilities"); var code = $@" public string Add(int num1, int num2) {{ // string templates var result = num1 + "" + "" + num2 + "" = "" + (num1 + num2); Console.WriteLine(result); return result; }} "; string result = script.ExecuteMethod(code, "Add", 10, 5) as string; Console.WriteLine("Result: " + result); Assert.IsFalse(script.Error, script.ErrorMessage); }
public void ExecuteMethodTest() { var script = new CSharpScriptExecution() { SaveGeneratedCode = true, CompilerMode = ScriptCompilerModes.Roslyn }; script.AddDefaultReferencesAndNamespaces(); string code = $@" public string HelloWorld(string name) {{ string result = $""Hello {{name}}. Time is: {{DateTime.Now}}.""; return result; }}"; string result = script.ExecuteMethod(code, "HelloWorld", "Rick") as string; Console.WriteLine($"Result: {result}"); Console.WriteLine($"Error: {script.Error}"); Console.WriteLine(script.ErrorMessage); Console.WriteLine(script.GeneratedClassCode); Assert.IsFalse(script.Error); Assert.IsTrue(result.Contains("Hello Rick")); // Just invoke the method again directly without any compilation/building // this is the fastest way to do multiple invocations. result = script.InvokeMethod(script.ObjectInstance, "HelloWorld", "Markus") as string; Console.WriteLine($"Result: {result}"); Assert.IsFalse(script.Error); Assert.IsTrue(result.Contains("Hello Markus")); }
public void ExecuteMoreThanOneMethodTest() { var script = new CSharpScriptExecution() { SaveGeneratedCode = true, CompilerMode = ScriptCompilerModes.Roslyn }; script.AddDefaultReferencesAndNamespaces(); string code = $@" public string HelloWorld(string name) {{ string result = $""Hello {{name}}. Time is: {{DateTime.Now}}.""; return result; }} public string GoodbyeName {{ get; set; }} public string GoodbyeWorld() {{ string result = $""Goodbye {{GoodbyeName}}. Time is: {{DateTime.Now}}.""; return result; }} "; string result = script.ExecuteMethod(code, "HelloWorld", "Rick") as string; Console.WriteLine($"Result: {result}"); Console.WriteLine($"Error: {script.Error}"); Console.WriteLine(script.ErrorMessage); Console.WriteLine(script.GeneratedClassCode); Assert.IsFalse(script.Error); Assert.IsTrue(result.Contains("Hello Rick")); dynamic instance = script.ObjectInstance; instance.GoodbyeName = "Markus"; result = instance.GoodbyeWorld(); Console.WriteLine($"Result: {result}"); Assert.IsTrue(result.Contains("Goodbye Markus")); }