Ошибка System.Object [] не может быть преобразована - PullRequest
0 голосов
/ 25 февраля 2011

Я не уверен, что происходит, любая помощь приветствуется. Я передаю код ниже строки и строки [3].

public void SetSwitch(string name, string[] parameters)
{
  _memberFactory.CallMember(3, "SetSwitch", new[] { typeof(string), typeof(string[]) }, new object[] { name, parameters }, CultureInfo.InvariantCulture);
}

CallMember(int memberCode, string memberName, Type[] parameterTypes, params object[] parms)
    {
     object result = methodInfo.Invoke(GetLateBoundObject, parms);
    }

Что я получаю, это ошибка ...

{"Объект типа 'System.Object []' нельзя преобразовать в тип 'System.String'."} System.Exception {System.ArgumentException}

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Вы передаете дополнительный аргумент - CultureInfo.InvariantCulture - при вызове CallMember. Это означает, что ваш массив parms фактически становится примерно таким:

new object[] { new object[] { name, parameters }, CultureInfo.InvariantCulture }

Поэтому, когда вы затем вызываете methodInfo.Invoke, вы передаете object[] и CultureInfo в качестве аргументов, когда метод предположительно ожидает string и string[].

1 голос
/ 25 февраля 2011

Существует ли метод перегрузки для CallMember?

Причина, по которой я спрашиваю, состоит в том, что вы передаете пять аргументов в CallMember, но показанный вами метод CallMember принимает только четыре аргумента.

Я предполагаю, что есть метод перегрузки для CallMember, и массив объектов, который вы передаете, собирается вместо строкового аргумента.

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