Как выполнить побитовое ИЛИ для перечислений.NET в сценарии, работающем с NLua?
У меня есть следующий код отражения в C#, который я пытаюсь воспроизвести с помощью сценария NLua:
G.Object.GetType().GetField("count", BindingFlags.Instance | BindingFlags.NonPublic);
Все хорошо, пока я не попытаюсь использовать побитовое ИЛИ операцию с двумя флагами. Я алерады попробовал:BindingFlags.Instance + BindingFlags.NonPublic
(арифметическая операция над нечисловым числом) BindingFlags.Instance | BindingFLags.NonPublic
(очевидно, не работает, но стоит попробовать)
Я также попробовал чистые реализации Lua библиотек битовой манипуляции. Все терпят неудачу, потому что то, что я пытаюсь ИЛИ, называется типом userdata в NLua.
Преобразование типа 'userdata' с помощью tonumber() также завершается неудачно.
Мой текущий код Lua ниже:obj = G.Object:GetType()
field = obj:GetField("count", *...two OR'd flags here...*)
1 ответ
Лучший способ объединить флаги Enum с NLua - использовать вспомогательную функцию luanet.enum
value = luanet.enum (BindingFlags, 'NonPublic,Instance')