1

我在 C# 中有以下反射代码,我正在尝试使用 NLua 脚本进行复制: G.Object.GetType().GetField("count", BindingFlags.Instance | BindingFlags.NonPublic);

一切都很好,直到我尝试对两个标志使用按位或运算。我已经尝试过:(
BindingFlags.Instance + BindingFlags.NonPublic非数字的算术运算) BindingFlags.Instance | BindingFLags.NonPublic(显然不起作用,但值得一试)

我还尝试了位操作库的纯 Lua 实现。一切都失败了,因为我试图 OR 在 NLua 中被称为“用户数据”类型。

使用 tonumber() 转换 'userdata' 类型也失败。

我当前的 Lua 代码如下:
obj = G.Object:GetType() field = obj:GetField("count", *...two OR'd flags here...*)

4

1 回答 1

3

将枚举标志与 NLua 结合的最佳方法是使用辅助函数luanet.enum

value = luanet.enum (BindingFlags, 'NonPublic,Instance')

示例:https ://github.com/codefoco/NLuaBox/blob/00af36aa480281ae33835173430a806c54c2f9dc/Resources/source/OutputViewController.lua#L41

于 2015-12-29T16:13:20.930 回答