Examples.
// script ""
/*/ c CsScript.cs; /*/
string code = """
using System;
using Au;
foreach (var v in args) print.it(v);
""";
var c = CsScript.Compile(code);
if (c == null) return;
//print.redirectConsoleOutput = true; //need this if the script contains Console.WriteLine and the caller app isn't console
c.Run("command", "line", "arguments");
// script ""
/*/ c CsScript.cs; /*/
var c = CsScript.Compile("""class Class1 { public static int Add(int a, int b) { return a + b; } }""", true);
print.it(c.Call("Class1", "Add", 1, 4));
var add = c.GetMethod<Func<int, int, int>>("Class1", "Add");
print.it(add(2, 5));
// script ""
/*/ c CsScript.cs; /*/
var globals = new[] { """
global using System;
global using Au;
"""
};
string code = """
public class Class1 {
public Class1() { print.it("ctor"); }
public int Method(int k) { print.it("Method", k); return k*2; }
}
""";
var c = CsScript.Compile(code, true, globals);
if (c == null) return;
var k = c.CreateInstance("Class1");
print.it(k.Method(5));
// script ""
/// Compile code with a class and call static methods.
/*/ c CsScript.cs; /*/
string code2 = """
using Au;
public class Class1 {
public static void Print(string s) { print.it(s); }
public static int Add(int a, int b) { return a + b; }
public static void F3(out string s, int i = 0) { s = "OUT " + i; }
}
""";
var c2 = CsScript.Compile(code2, library: true);
if (c2 == null) return;
var prt = c2.GetMethod<Action<string>>("Class1", "Print");
prt("TEST");
var add = c2.GetMethod<Func<int, int, int>>("Class1", "Add");
print.it(add(2, 5), add(1000, 1));
var f3 = c2.GetMethod<Delegates.D1>("Class1", "F3");
f3(out var s1); print.it(s1);
/// <summary>
/// Examples of delegates for methods where cannot be used <b>Action</b> or <b>Func</b>, for example with in/ref/out/params/optional parameters.
/// </summary>
class Delegates {
public delegate void D1(out string s, int i = 0);
}
// script ""
/// Compile code with a class, create a class instance as dynamic, and call functions.
/*/ c CsScript.cs; /*/
string code3 = """
using Au;
public class Class1 {
int _value;
public Class1() { }
public Class1(int value) { _value = value; }
public void Print(string s) { print.it(s); }
public int GetValue() { return _value; }
public void F3(out string s, int i = 0) { s = "OUT " + i; }
public int Prop { get; set; }
}
""";
var c3 = CsScript.Compile(code3, library: true);
if (c3 == null) return;
//var d = c3.CreateInstance("Class1"); //use constructor with 0 paramaters
var d = c3.CreateInstance("Class1", 3); //use constructor with 1 paramater
d.Print("test");
print.it(d.GetValue());
d.F3(out string s2); print.it(s2);
d.Prop = 4; print.it(d.Prop);