Skip to content
Henrik Cooke edited this page Mar 2, 2015 · 1 revision

Call CLR Objects

var scriptEngine = new LuScriptEngine();
dynamic environment = scriptEngine.CreateStandardEnvironment();

environment.myVariable = "Hello";
scriptEngine.Execute("myVariable = myVariable:ToUpper()", environment);

Console.WriteLine(environment.myVariable);  // Output: HELLO

Call LuBox Function

var scriptEngine = new LuScriptEngine();
dynamic environment = scriptEngine.CreateStandardEnvironment();

scriptEngine.Execute(@"
    function Add(left, right)
        return left + right
    end", environment);

Console.WriteLine(environment.Add(1, 2));  // Output: 3

Handle CLR Events

public class Foo
{
    public event Action<string> BarFired;

    public void FireBar()
    {
        BarFired("BAR!");
    }
}
var scriptEngine = new LuScriptEngine();
dynamic environment = scriptEngine.CreateStandardEnvironment();

var foo = new Foo();
environment.foo = foo;
environment.console = Console.Out;

scriptEngine.Execute(@"
    function handleBar(text)
        console:WriteLine(text)
    end

    foo.BarFired:Add(handleBar)", environment);

 foo.FireBar(); // Output: BAR!

Iterate CLR Enumerable

var scriptEngine = new LuScriptEngine();
dynamic environment = scriptEngine.CreateStandardEnvironment();

environment.list = new List<int> { 1, 2, 3, 4, 5 };
scriptEngine.Execute(@"
    sum = 0
    for i in iter(list) do
        sum = sum + i
    end
    ", environment);

Console.WriteLine(environment.sum); // 15

Clone this wiki locally