作者:yushun | 来源:互联网 | 2023-08-18 13:54
--lua访问c#程序
require("luanet") --引入luanet.dll,该dll文件需与该lua文件在同一路径下
luanet.load_assembly("LuaAndCSharp") --加载程序集(自己写的项目程序集)
luanet.load_assembly("System") --加载程序集(C#内置的程序集)
COnsole= luanet.import_type("System.Console") --获取System程序集下的Console类
print(Console)
Console.WriteLine("商品名:{0},价格:{1}","大刀",50) --现在可以调用C#中的方法
MyTest = luanet.import_type("LuaAndCSharp.MyTest")
print(MyTest)
输出:
>lua -e "io.stdout:setvbuf 'no'" "test1.lua"
ProxyType(System.Console): 54267293
商品名:大刀,价格:50
nil
>Exit code: 0
自定义程序集没有放到 luanet 可以加载到的地方?如果是在 C# 里用 LuaInterface 调用 DoString 执行 lua 代码,进而在 lua 代码里用 luanet load_assembly ,那么实际上是你的宿主程序加载自定义程序集,所以要保证你的宿主程序本身加载了你所要加载的自定义程序集,这样 luanet 才能找得到它。