通过VB.NET中的lambda表达式接受不同数量的参数

时间:2012-09-21 20:41:53

标签: vb.net delegates lambda

我让自己陷入了纠结。看看以下内容:

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

0 个答案:

没有答案