我让自己有点纠结。看看以下内容:
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
成为一个参数数组,但是,这在 lambda 表达式中是不允许的。问题是我的第一个代码位根据所涉及的某些情况发送不同的参数。只要参数等于 1(当前),它就会正确发送参数,这是一个问题。在许多情况下,它需要发送更多的参数(或者在某些情况下根本没有)。
有没有办法让这个 lambda 表达式除了任意数量的参数而不使其成为特殊情况?
只是为了澄清...... RunEvent
通过一个列表并调用其中的每个委托。 ConnectEvent
将我的 lambda 函数添加到该列表中。