如何在使用NLua运行的脚本中对.NET枚举执行逐位OR
本文关键字:枚举 NET 执行 OR 脚本 NLua 运行 | 更新日期: 2023-09-27 18:28:16
我在C#中有以下反射代码,我正试图使用NLua脚本复制这些代码:
G.Object.GetType().GetField("count", BindingFlags.Instance | BindingFlags.NonPublic);
一切都很好,直到我尝试对两个标志使用位或运算。我已经试过了:BindingFlags.Instance + BindingFlags.NonPublic
(非数算术运算)BindingFlags.Instance | BindingFLags.NonPublic
(显然不起作用,但值得一试)
我还尝试过位操作库的纯Lua实现。所有操作都失败了,因为我尝试OR的操作在NLua中被称为"userdata"类型。
使用tonumber()转换"userdata"类型也失败。
我当前的Lua代码如下:obj = G.Object:GetType()
field = obj:GetField("count", *...two OR'd flags here...*)
将Enum标志与NLua组合的最佳方法是使用辅助函数luanet.enum
value = luanet.enum (BindingFlags, 'NonPublic,Instance')
示例:https://github.com/codefoco/NLuaBox/blob/00af36aa480281ae33835173430a806c54c2f9dc/Resources/source/OutputViewController.lua#L41