private static DelegateMethod WrapMethod(MethodBase methodInfo, Type[] parameterTypes, Type[] genericArguments) { DelegateMethod methodWrapper; if (!DelegateMethodHandleCache.TryGetValue(new MethodDef(methodInfo.MethodHandle, methodInfo.DeclaringType.TypeHandle), out methodWrapper)) { methodWrapper = WrapMethodInfo(methodInfo, parameterTypes, genericArguments); } return(methodWrapper); }
private static DelegateMethod WrapMethod(MethodInfo methodInfo) { DelegateMethod methodWrapper; if (!DelegateMethodHandleCache.TryGetValue(new MethodDef(methodInfo.MethodHandle, methodInfo.DeclaringType.TypeHandle), out methodWrapper)) { ParameterInfo[] parameterInfo = methodInfo.GetParameters(); Type[] parameterTypes = ((0 < parameterInfo.Length) ? new Type[parameterInfo.Length] : Type.EmptyTypes); for (int i = 0; i < parameterInfo.Length; ++i) { parameterTypes[i] = parameterInfo[i].ParameterType; } Type[] genericArguments = ((methodInfo.IsGenericMethod) ? methodInfo.GetGenericArguments() : Type.EmptyTypes); methodWrapper = WrapMethodInfo(methodInfo, parameterTypes, genericArguments); } return(methodWrapper); }