在LuaInterface注册的方法中使用“.”。

我正在使用LuaInterface将Lua集成到C#程序中。我想编写能够访问程序中C#方法的脚本。

所访问的方法位于单独的“子系统”中,我希望Lua方法定义子系统,然后使用 . 作为分隔符定义方法。 例如:子系统名称.方法名称

但是当我尝试注册该方法时,会引发异常。我已将其更改为_并且它可以完美地工作。有没有办法可以让它使用.而不报错?程序还有其他接口可以调用这些方法,比如通过HTTP的JSON-RPC,这些接口使用. 符号,因此希望保持一致。

点赞
用户29407
用户29407

在 .NET 中,成员名称不能包含 .

2011-09-03 10:18:25
用户221509
用户221509

你可以在你的.NET代码中使用_作为分隔符来定义你的方法,例如SubsystemName_MethodName。然后创建一个简单的Lua模块,它做大致如下操作:

local YourClass = luanet.import_type("Your.Binding.Class")

SubsystemName = {} -- create a global table
SubsystemName.MethodName = YourClass.SubsystemName_MethodName

这将允许你在Lua中使用SubsystemName.MethodName

你可以使用代码生成器来自动生成Lua代码,而不是手动编写(这可能很乏味且容易出错)。生成器从类/方法列表中创建Lua代码。

2011-09-03 11:34:13