我正在尝试使用通用包装器来封装我的肥皂呼叫,以简化日志记录和其他公用程序。
当尝试在发送的客户端上调用方法时,使用参数时会抛出此错误:
{“无法将类型为'System.String'的对象转换为类型为'System.String []'。”}
我的代码:
private T CallExternalSoap<T>(object client, string funcName, params object[] args)
{
var type = client.GetType();
var method = type.GetMethod(funcName);
if (method is null)
{
throw new NullReferenceException($"Could not find method {funcName} on object of type {type}.");
}
if (method.GetParameters().Length != args.Length)
{
throw new Exception($"Number of parameters in {args} does not match number of expected parameters in method {funcName} . Expected {method.GetParameters().Length} parameters");
}
var result = (T)method.Invoke(client, args);
return result;
}
无论我发送哪个对象/参数,都会收到该错误。有什么想法吗?
答案 0 :(得分:1)
问题不在于参数,而在于转换结果。
SOAP方法返回一个字符串,但是您将根据类型参数将其转换为字符串[]。
CallExternalSoap<string[]>(...