【问题标题】:System.Object[] error cannot be convertedSystem.Object[] 错误无法转换
【发布时间】:2012-03-07 19:07:31
【问题描述】:

我不确定发生了什么任何帮助表示赞赏。我将传递给字符串和字符串 [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}

【问题讨论】:

    标签: c# type-conversion


    【解决方案1】:

    当你调用CallMember 时,你传递了一个额外的参数——CultureInfo.InvariantCulture。这意味着您的 parms 数组实际上变成了这样:

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

    因此,当您随后调用 methodInfo.Invoke 时,您将传递 object[]CultureInfo 作为参数,而该方法可能需要 stringstring[]

    【讨论】:

      【解决方案2】:

      CallMember 有重载方法吗?

      我问的原因是您将五个参数传递给 CallMember,但您显示的 CallMember 方法只接受四个参数。

      我的猜测是 CallMember 有一个重载方法,而您传入​​的对象数组将用于字符串参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-07
        • 1970-01-01
        • 1970-01-01
        • 2011-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多