我让自己陷入了纠结。看看以下内容:
Friend Sub RunEvent(ByVal ObjectUID As Long, ByVal EventUID As Long, ByVal Arguments As GenericEventArgument)
RunSafeCheck(ObjectUID, EventUID)
For Each E As CustomEvent In MonitoredEvents(ObjectUID)(EventUID)
E.EventDelegate.DynamicInvoke(Arguments.ArgList)
Next
End Sub
此特定代码位将运行传递给它的任意数量的委托。传递的一个这样的委托是一个lambda表达式:
Public Function ConnectEvent(ByVal E As Long, ByVal lua_delegate As LuaFunction) As CustomEvent
Return GlobalShare.Game.EventManager.RegisterEvent(UID, E, Sub(args() As Object)
lua_delegate.Call(args)
End Sub)
End Function
我真的需要args
成为一个paramarray,但是,lambda表达式中不允许这样做。问题是我的第一个代码位根据所涉及的一些情况发送不同的参数。只要它们等于1(当前),它就会正确发送参数,这是一个问题。在许多情况下,它必须发送许多更多的参数(或者在某些情况下根本不发送参数)。
有没有办法让这个lambda表达式除了任意数量的参数而不是特殊情况?
只是为了澄清...... RunEvent
遍历列表并调用其中的每个代理。 ConnectEvent
将我的lambda函数添加到该列表中。