我有这个场景:
我想调用一个acepts List参数的方法。
参数:列表 当我执行这一行:
MethodInfo methodInfo = type.GetMethod(nameMethod);
object classInstance = Activator.CreateInstance(type, null);
object[] parametersArray = new object[] { Parameter == null ? Activator.CreateInstance(tipoEntidad, null) : Parameter };
objeto = methodInfo.Invoke(classInstance, parametersArray);
抛出此错误:
innerException:{“Elformateadorinicióunaexterpciónalintentar deserializar el mensaje:error al intentar deserializarelparámetro 链接:tempuri.org:lpdv。 El mensaje de InnerException era'错误en la línea1,posición342。El elemento 'http://schemas.microsoft.com/2003/10/Serialization/Arrays:anyType' coniene datos de un tipo que重合con nombre 'http://schemas.datacontract.org/2004/07/Entitys:Pdv'。萨尔瓦多 deserializador no tiene conocimientodeningúntipoqueestéasignado 一个este nombre。通过使用DataContractResolver o agregar el tipo 对应一个'PuntoVenta'和la lista de tipos conocidos(por ejemplo,usando el atributo KnownTypeAttributeoagregándoloala lista de tipos conocidos que se pasa a DataContractSerializer)。'。 咨询InnerException paraobtenermásinformación。“}
只有在参数为List时才会发生这种情况,如果参数的Pdv工作正常,¿我能做什么?
答案 0 :(得分:1)
这对我有用
[Test]
public void T1()
{
var type = typeof (classwithListmethod);
MethodInfo methodInfo = type.GetMethod("List");
object classInstance = Activator.CreateInstance(type, null);
var list = new List<string>(){"one","two"};
var a = methodInfo.Invoke(classInstance, new []{list});
}
public class classwithListmethod
{
public void List(List<string> s)
{
foreach (var ss in s)
{
Console.WriteLine(ss);
}
}
}