如何在运行NLua的脚本中对.NET枚举执行按位OR?

时间:2015-12-26 12:00:43

标签: c# reflection bit-manipulation nlua

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

一切都很好,直到我尝试在两个标志上使用Bitwise OR运算。我有alerady试过:
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...*)

1 个答案:

答案 0 :(得分:3)

将Enum标志与NLua组合的最佳方法是使用辅助函数class="col-lg-8"

luanet.enum

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