Kaihyo
Kaihyo
CC#
Created by Kaihyo on 10/23/2023 in #help
❔ 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). I'm calling CreateRemoveMethod like this : 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 ? 🙂
22 replies