static RpcExplicitParamsFuncDelegateEntryFactory()
        {
            if (typeof(TResult).IsConstructedGenericType)
            {
                var genericType = typeof(TResult).GetGenericTypeDefinition();
                if (genericType == typeof(Task <>))
                {
                    Instance = RpcMethodEntryFactoryBuildingHelper.CreateEntryFactory <Func <TParams, TResult> >(typeof(RpcAsyncDelegateEntryFactory <, , , , ,>),
                                                                                                                 typeof(TParams),
                                                                                                                 typeof(TResult).GetGenericArguments()[0],
                                                                                                                 typeof(ExplicitParamsObjectDeserializer <TParams>),
                                                                                                                 ExplicitParamsModifierCache <TParams> .ModifierType,
                                                                                                                 typeof(ExplicitParamsTaskFuncDelegateInvoker <TParams, TResult>));
                }
                else
                {
                    if (genericType == typeof(ValueTask <>))
                    {
                        Instance = RpcMethodEntryFactoryBuildingHelper.CreateEntryFactory <Func <TParams, TResult> >(typeof(RpcAsyncDelegateEntryFactory <, , , , ,>),
                                                                                                                     typeof(TParams),
                                                                                                                     typeof(TResult).GetGenericArguments()[0],
                                                                                                                     typeof(ExplicitParamsObjectDeserializer <TParams>),
                                                                                                                     ExplicitParamsModifierCache <TParams> .ModifierType,
                                                                                                                     typeof(ExplicitParamsFuncDelegateInvoker <TParams, TResult>));
                    }

                    else
                    {
                        Instance = RpcMethodEntryFactoryBuildingHelper.CreateEntryFactory <Func <TParams, TResult> >(typeof(RpcDelegateEntryFactory <, , , , ,>),
                                                                                                                     typeof(TParams),
                                                                                                                     typeof(TResult),
                                                                                                                     typeof(ExplicitParamsObjectDeserializer <TParams>),
                                                                                                                     ExplicitParamsModifierCache <TParams> .ModifierType,
                                                                                                                     typeof(ExplicitParamsFuncDelegateInvoker <TParams, TResult>));
                    }
                }
            }
            else
            {
                if (typeof(TResult) == typeof(Task))
                {
                    Instance = RpcMethodEntryFactoryBuildingHelper.CreateAsyncActionEntryFactory <Func <TParams, TResult> >(typeof(RpcAsyncDelegateEntryFactory <, , , ,>),
                                                                                                                            typeof(TParams),
                                                                                                                            typeof(ExplicitParamsObjectDeserializer <TParams>),
                                                                                                                            ExplicitParamsModifierCache <TParams> .ModifierType,
                                                                                                                            typeof(ExplicitParamsTaskActionDelegateInvoker <TParams>));
                }
                else
                {
                    if (typeof(TResult) == typeof(ValueTask))
                    {
                        Instance = RpcMethodEntryFactoryBuildingHelper.CreateAsyncActionEntryFactory <Func <TParams, TResult> >(typeof(RpcAsyncDelegateEntryFactory <, , , ,>),
                                                                                                                                typeof(TParams),
                                                                                                                                typeof(ExplicitParamsObjectDeserializer <TParams>),
                                                                                                                                ExplicitParamsModifierCache <TParams> .ModifierType,
                                                                                                                                typeof(ExplicitParamsFuncDelegateInvoker <TParams, ValueTask>));
                    }
                    else
                    {
                        Instance = RpcMethodEntryFactoryBuildingHelper.CreateEntryFactory <Func <TParams, TResult> >(typeof(RpcDelegateEntryFactory <, , , , ,>),
                                                                                                                     typeof(TParams),
                                                                                                                     typeof(TResult),
                                                                                                                     typeof(ExplicitParamsObjectDeserializer <TParams>),
                                                                                                                     ExplicitParamsModifierCache <TParams> .ModifierType,
                                                                                                                     typeof(ExplicitParamsFuncDelegateInvoker <TParams, TResult>));
                    }
                }
            }
        }
 static RpcExplicitParamsActionDelegateEntryFactory()
 {
     Instance = RpcMethodEntryFactoryBuildingHelper.CreateEntryFactory <Action <TParams> >(typeof(RpcDelegateEntryFactory <, , , , ,>), typeof(TParams), typeof(NullResult), typeof(ExplicitParamsObjectDeserializer <TParams>), ExplicitParamsModifierCache <TParams> .ModifierType, typeof(ExplicitParamsActionDelegateInvoker <TParams>));
 }