[C#] EventHandlers "playerConnecting" has strange behavior

The logs of error i get is this:

Error invoking callback for event playerConnecting: System.InvalidCastException: Invalid cast from 'System.String' to 'CitizenFX.Core.Player'.
  at System.Convert.DefaultToType (System.IConvertible value, System.Type targetType, System.IFormatProvider provider) [0x00269] in <4fffd39960df419684f9b9cb5ce46688>:0
  at System.String.System.IConvertible.ToType (System.Type type, System.IFormatProvider provider) [0x00000] in <4fffd39960df419684f9b9cb5ce46688>:0
  at System.Convert.ChangeType (System.Object value, System.Type conversionType, System.IFormatProvider provider) [0x0021b] in <4fffd39960df419684f9b9cb5ce46688>:0
  at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x0000c] in <4fffd39960df419684f9b9cb5ce46688>:0
  at CitizenFX.Core.CallUtilities.<GetPassArguments>g__ChangeType|0_0 (System.Object value, System.Type type) [0x0001d] in /src/code/client/clrcore/EventHandlerDictionary.cs:127
  at CitizenFX.Core.CallUtilities.GetPassArguments (System.Reflection.MethodInfo method, System.Object[] args, System.String sourceString) [0x0008d] in /src/code/client/clrcore/EventHandlerDictionary.cs:169
  at CitizenFX.Core.EventHandlerEntry.Invoke (System.String sourceString, System.Object[] args) [0x00047] in /src/code/client/clrcore/EventHandlerDictionary.cs:88

How i produced that, in next code:

EventHandlers["playerConnecting"] += new Action<Player, string, dynamic, dynamic>((player, playerName, cb, deferrals) => new OnPlayerConnectingEvent(player, playerName, cb, deferrals));

But if i change the “player” as last parameter like this:

EventHandlers["playerConnecting"] += new Action<string, dynamic, dynamic, Player>((playerName, cb, deferrals, player) => new OnPlayerConnectingEvent(player, playerName, cb, deferrals));

And triggers other error:

Error invoking callback for event playerConnecting: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object
  at ScriptServer.Events.OnPlayerConnectingEvent..ctor (System.String playerName, System.Object cb, System.Object deferrals, CitizenFX.Core.Player source) [0x00008] in <bae2ef949fc846e98098f2fe3c5bc2f4>:0
  at (wrapper dynamic-method) System.Object.CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,string,object,object,CitizenFX.Core.Player)
  at System.Dynamic.UpdateDelegates.UpdateAndExecute5[T0,T1,T2,T3,T4,TRet] (System.Runtime.CompilerServices.CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) [0x00144] in <3e501f8d5238405b81a46e43e9571825>:0
  at (wrapper delegate-invoke) System.Func`7[System.Runtime.CompilerServices.CallSite,System.Type,System.String,System.Object,System.Object,CitizenFX.Core.Player,ScriptServer.Events.OnPlayerConnectingEvent].invoke_TResult_T1_T2_T3_T4_T5_T6(System.Runtime.CompilerServices.CallSite,System.Type,string,object,object,CitizenFX.Core.Player)
  at ScriptServer.Queue.Queue+<>c.<.ctor>b__35_8 (System.String playerName, System.Object cb, System.Object deferrals, CitizenFX.Core.Player player) [0x0005c] in <bae2ef949fc846e98098f2fe3c5bc2f4>:0
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0003b] in <4fffd39960df419684f9b9cb5ce46688>:0
   --- End of inner exception stack trace ---
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00051] in <4fffd39960df419684f9b9cb5ce46688>:0
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <4fffd39960df419684f9b9cb5ce46688>:0
  at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000e7] in <4fffd39960df419684f9b9cb5ce46688>:0
  at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00008] in <4fffd39960df419684f9b9cb5ce46688>:0
  at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <4fffd39960df419684f9b9cb5ce46688>:0
  at CitizenFX.Core.EventHandlerEntry.Invoke (System.String sourceString, System.Object[] args) [0x00064] in /src/code/client/clrcore/EventHandlerDictionary.cs:89

But if i had that event method on same class where im calling EventHandlers, with “player” as first parameter, everything works perfectly.

You can’t add parameter attributes on inline delegates, and you need [FromSource] for the Player argument to work.

Hello, thanks for your response, you are saying i cant have the anonymous operator with these parameters? And on method where is called has already got [FromSource].