xlua table 映射C# class

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容