私は少し絡み合っています。以下を見てください。
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
この特定のコードビットは、渡された任意の数のデリゲートを実行します。渡されるそのようなデリゲートの1つは、ラムダ式です。
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である必要がありますが、これはラムダ式では許可されていません。問題は、私の最初のコードビットが関係する状況のいくつかに応じて異なる引数を送信することです。(現在)1に等しい限り、引数を適切に送信します。これは問題です。多くの場合、さらに多くの引数を送信する必要があります(または、場合によってはまったく送信しない)。
このラムダ式を特別な場合ではなく、任意の数の引数を除いて取得する方法はありますか?
明確にするために... RunEvent
リストを調べて、その中の各デリゲートを呼び出します。 ConnectEvent
そのリストにラムダ関数を追加します。