0

我让自己有点纠结。看看以下内容:

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 函数添​​加到该列表中。

4

0 回答 0