ERRO COM METODO INVOKE

MGALDINO 12/06/2012 11:31:19
#403979
Pessoal bom dia,

Conhece pouco C# e WebService.

Estou com um erro: Parameter count mismatch.

object[] args = {messagePipeEnumerator.Current.pipeAlias, messagePipeEnumerator.Current.body, user, channelPath};

Collections.ArrayList localArrayList = null;
if(localMethodInfo != null)
{
//Erro ocorre na linha abaixo.
localArrayList = (Collections.ArrayList)localMethodInfo.Invoke(localObject, args);
}

Como faço para tentar solucionar isso erro.

Obigado
KERPLUNK 12/06/2012 12:09:27
#403980
Caramba, porque está fazendo dessa maneira? Porque simplesmente não adiciona a referência do webservice e usa os métodos dele mesmo??? Precisa ser por invoke?
MGALDINO 12/06/2012 13:31:24
#403994
Então KERPLUNK,

Esse trecho de código é aqui da empresa onde trabalho, estou apenas dando manutenção e isso é antigo.

Não posso mudar muita coisa.
OCELOT 12/06/2012 14:02:06
#404003
O erro diz tudo, número incorreto de parâmetros.

Você tem que verificar quantos parâmetros o método que você está chamando pelo invoke precisa, no caso você está passando 4 parâmetros através do array chamado args, você precisa verificar quantos são corretamente e modificar este array para incluir todos os parâmetros necessários.
MGALDINO 13/06/2012 10:16:39
#404042
OCELOT,

Do erro eu sabia porem, nao sabia resolver porem achei uma solução pesquisando.

Vou deixar a explicação para mais pessoas que trabalha com algumas versões antigas como aqui na empresa.

A rotina faz um while pegando varios modelos e dando um invoke em alguns metodos
Apenas um tem apenas 2 parametos e o restante 4.
A solução foi verificar quantos parametros o metodo necessita.


if (localMethodInfo.GetParameters().Length == 2)
{
args = new object[]{messagePipeEnumerator.Current.pipeAlias, channelPath};
}
else
{
args = new object[]{messagePipeEnumerator.Current.pipeAlias, messagePipeEnumerator.Current.body, user, channelPath};
}

Tópico encerrado , respostas não são mais permitidas