如何在使用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...*)

如何在使用NLua运行的脚本中对.NET枚举执行逐位OR

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

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

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