У меня есть следующий метод:
public MethodInfo FancyGetMethodInfo
(object obj, string methodName, Type[] methodSignature)
{
return obj.GetType().GetMethod(methodName, methodSignature);
}
и ради примера, который я имею в своем объекте, я передаю два метода
public int Subtract(int a, int b) { return a - b; }
public int Add(params int[] a) { return a.Sum(); }
И когда я выполняюследующие строки я получаю эти результаты:
var SubMethod = FancyGetMethodInfo(obj, "Subtract",
new Type[] { typeof(int), typeof(int) });
//I get a MethodInfo
var AddMethod = FancyGetMethodInfo(obj, "Add",
new Type[] { typeof(int), typeof(int) });
//I get a Null reference
Я уверен, что это из-за параметров в Add.Есть ли чистый способ получить ссылку на мое MethodInfo для моего метода Add с заданным типом Type [] произвольного размера, содержащим целочисленные значения и имеющего доступ только к предоставленным переменным в моем методе FancyGetMethodInfo?
Редактировать: более красноречиво изложенный Джоном Скитом, я хочу выполнить ту же привязку, что и компилятор C # в моем методе.он должен работать должным образом с подклассами, неявным приведением, параметрами произвольной длины и т. д. ...
Также в соответствии с запросом, соответствующая ссылка здесь: Определение, использует ли параметр "params", используя отражение в C #? что даст мне понять, что метод имеет params.