❔ Building a delegate with a Type and a MethodInfo keeps throwing ArgumentException
Hi ! I'm trying to build a delegate from a Type and a MethodInfo. The type correspond to the method 1st argument's type. I have the following code :
public System.Delegate CreateRemoveMethod(System.Type elementType, System.Reflection.MethodInfo methodInfo) { if (methodInfo == null) { return null; } System.Reflection.ParameterInfo[] parameters = methodInfo.GetParameters(); if (parameters.Length != 1 && parameters[0].ParameterType != elementType) { return null; } var action = typeof(System.Action<>).MakeGenericType(elementType); return methodInfo.CreateDelegate(action); }
public System.Delegate CreateRemoveMethod(System.Type elementType, System.Reflection.MethodInfo methodInfo) { if (methodInfo == null) { return null; } System.Reflection.ParameterInfo[] parameters = methodInfo.GetParameters(); if (parameters.Length != 1 && parameters[0].ParameterType != elementType) { return null; } var action = typeof(System.Action<>).MakeGenericType(elementType); return methodInfo.CreateDelegate(action); }
Unfortunately, the function throws an exception every time I call it, saying method arguments are incompatible. The signature of the method I'm using to test it is the following one :
void LogInConsole(BaseClass item)
void LogInConsole(BaseClass item)
. I'm calling CreateRemoveMethod like this :
CreateRemoveMethod(typeof(BaseClass), methodInfo)
CreateRemoveMethod(typeof(BaseClass), methodInfo)
, with methodInfo corresponding LogInConsole that I gathered through reflection. Would you have any insight on what I'm doing wrong here ?