--make a table for all the classes you want to expose
safeClasses = {}
--store all the ones you want
safeClasses.Form = luanet.System.Windows.Forms.Form
--etc...
--remove access to LuaInterface
luanet = nil
package.loaded.luanet = nil
--prevent future packages from being loaded
require = nil
package.loadlib = nil
これを逆に行うこともできます。最初にLuaInterfaceのグローバルインスタンスと保存されたインスタンスを削除してから、ローカル参照(ブロックの残りのすべてのコードで使用できます)を介してすべての作業を実行します。
--get a local reference to LuaInterface without clobbering the name
local luainterface = luanet
--delete the global reference to it
luanet = nil
--also delete it from the package store and disable package loading
package.loaded.luanet = nil
require = nil
package.loadlib = nil
--put luanet back locally at its original name (for convenience)
local luanet = luainterface
--make a table for all the classes you want to expose
safeClasses = {}
--store all the ones you want
safeClasses.Form = luanet.System.Windows.Forms.Form
--etc...
(上記の()の3段階の名前保存ダンスを回避するには、グローバルテーブルにlocal luainterface=luanet; luanet=nil; local luanet=luainterface
直接ローカライズしてから、グローバルテーブルへの参照luanet
を通じてグローバルを削除します。_G
local luanet=_G.luanet
_G.luanet = nil
私は個人的な好みの問題としてそうしないことを選んだだけです。)