C#C
C#3y ago
Kaihyo

❔ 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);
        }

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 ? 🙂
Was this page helpful?