【发布时间】:2015-09-03 19:15:05
【问题描述】:
所以我有一个小 lua 脚本,我想在其中调用 IEnumerable 集合的扩展方法。
require ''CLRPackage''
import ''System.Collections.Generic''
import ''System.Linq''
import ''My.Namespace.Containing.AudioMarker''
local audioMarkersWithOffset = GetAudioMarkers();
local numberOfMarkers = audioMarkersWithOffset.Count();
所以 GetAudioMarkers() 是一个 C# 方法,它返回一个 IEnumerable 的 AudioMarker 对象。做一个 luanet.each 会很好,我将能够迭代到集合的每个元素。但是我需要该集合的计数并调用 .Count() 会出现以下错误: NLua.Exceptions.LuaScriptException: [string "chunk"]:54: 尝试调用字段'Count'(一个字符串值)。
顺便说一句,我知道使用 nlua 您不需要预先注册您的类型来使用它们,所以我尝试使用和不使用关于 AudioMarker 的最后一次导入,但得到了相同的结果。
我可能做错了什么,但我似乎在网络上找不到任何可以帮助解决此问题的文档。
【问题讨论】:
-
尝试致电
Enumerable.Count(audioMarkersWithOffset)。扩展方法(如 LINQ .Count() 方法)可以像普通静态方法一样调用。 -
还是不行。错误是:NLua.Exceptions.LuaScriptException:[string“chunk”]:156:尝试索引全局“Enumerable”(一个零值)。我确实检查了 audioMarkersWithOffset 不是 nil 并且确实如此。
-
嗨丹尼尔,尝试使用 : 代替。
audioMarkersWithOffset:Count(); -
不起作用:我用点而不是冒号调用 .net 方法,当方法不是扩展方法时它正在工作
-
dot 仅用于静态方法,实例方法应使用
:调用