nrother / dynamiclua

Wrapper for NLua, making access to lua more idomatic from .NET. Heavily using the "dynamic" keyword.
63 stars 10 forks source link

LuaTable instance is passed to Methods #4

Open nrother opened 10 years ago

nrother commented 10 years ago

When a C#-Method is called with a table as a parameter, a instance of LuaTable is passed not a instance of DynamicLuaTable. Currently there is no idea how to change this, the only solution would be a wrapper Method, wrapping the in the correct classes.

This would be a workarround, but it requires a reference to the orignal LuaInterface Assembly:

lua.func3 = new Action<dynamic>((table) =>
{
       table = new DynamicLuaTable(table, lua.LuaInterpreter);
       Console.WriteLine(table.num);
});
lua("func3({num = 42})");
nrother commented 10 years ago

Just to makes this more clear: In the code given above the table in func3 is of the type dynamic with the underlying type LuaTable (instead of DynamicLuaTable). This means, you can't use table.num (but table["num"] works.)

Rewrapping the table as shown above is a workaround. Or just use the array syntax...