Передача параметров строкового массива в метод Invoke - PullRequest
0 голосов
/ 13 ноября 2011

У меня есть этот класс:

using System.Linq;
  namespace TestNamespace {
     public class Program {
         public static void Main(string[] args) {
                //does stuff
          }
      }
    }

Я загружаю вышеуказанную сборку и хочу вызвать метод с параметром массива строк.

Это дает мне нулевое исключение:

private static object[] parameters = new object[1];
string[] pa = { "1", "2" };
parameters[0] = pa;
//Creating target and other code
bool retVal = (bool)target.Invoke(null, parameters);

Есть мысли? Спасибо

1 Ответ

4 голосов
/ 13 ноября 2011

Где находится NullReferenceException.Вы уверены, что правильно отражаете MethodInfo и что target не null?Это мое подозрение относительно того, что на самом деле здесь происходит.Если бы в методе было выброшено NullReferenceException, оно было бы заключено в TargetInvocationException, и поэтому я подозреваю, что NullReferenceException - это потому, что target равно нулю.Вы загружаете и вызываете метод:

var target = typeof(Program)
                 .GetMethod("Main", BindingFlags.Public | BindingFlags.Static);
bool retVal = (bool)target.Invoke(null, new object[] { pa });

Параметр parameters для MethodInfo.Invoke - это object[] с тем же числом, порядком и типами параметров для вызываемого метода.В вашем случае у вас есть один параметр типа string[].Таким образом, параметр object[] для MethodInfo.Invoke должен быть массивом с одним элементом, и этот элемент является экземпляром string[].Это то, что я выполнил с помощью приведенного выше синтаксиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...