xlua 中的table 会自动映射到C# 的class 类型。需要变量的键名相同。
table 或者 class 中都可以有冗余属性。
但是有一种情况,即时映射没有问题,但是class 中的属性就没有赋值。
也就是class 中的属性具有get/set属性的时候,lua不会映射这个变量。
public class test
{
private string lua = "local data = {id= 999, Name='测试'}" +
"local n = CS.NormalInfo(data)" +
"print(n.Id)";
public void Do()
{
LuaEnv luaenv = new LuaEnv();
luaenv.DoString(lua);
luaenv.Dispose();
}
}
public class Data
{
/// <summary>
/// 此变量具有get/get 属性,不会映射
/// </summary>
public int id
{
get;
set;
}
public string Name;
}
public class InfoBase
{
public int Id;
public InfoBase(int id)
{
Id = id;
}
}
public class NormalInfo : InfoBase
{
public NormalInfo(Data d) : base(d.id)
{
Debug.Log("C# .ctor。id =" + d.id + ", name="+ d.Name);
}
}
输出:
C# .ctor。id =0, name=测试
LUA: 0