Usuário com melhor resposta
Cliente consumindo um WCF?

Pergunta
-
Ola pessoa,
Eu tenho um servidor de aplicação rodando e preciso agora fazer a chamada no cliente. Bom eu ja sei como fazer isso mas eu gostaria de criar uma classes que receberia o nome do contrato exposto no WCF então este método criaria a conexão com o WCF e retornaria a instancia do proxy pois vou fazer varias chamads desta na aplicação cliente, e cada chamada usa um contrato diferente. Mas o problema é que não sei como passar como parametro o nome da interface (contrato) que eu quero conectar. Que tipo deveria ser o parametro para receber o contrato que eu quero?.
Veja como faço:
Servidor = new ChannelFactory<IPessoa>(new NetTcpBinding(), Endereco);
E gostaria de fazer assim
public interface Conectar(interface pContrato )
{
pContrato Servidor
Servidor = new ChannelFactory<pContrato>(new NetTcpBinding(), Endereco);
return Servidor.CreateChannel();
}
Seria algo parecido com isto. Alguem teria uma ideia melhor?
Respostas
-
Alo Marcio,
Você pode usar um parâmetro genérico no seu método:
public T Conectar<T>() {
ChannelFactory<T> factory = new ChannelFactory<T>(new NetTcpBinding(), Endereco);
T resultado = factory.CreateChannel();
((IClientChannel)resultado).Closed += delegate { factory.Close(); }; // não é estritamente necessário, mas é sempre bom fechar a fábrica se você não precisa mais dela
return resultado;
}- Sugerido como Resposta Israel AeceModerator quinta-feira, 29 de outubro de 2009 23:36
- Marcado como Resposta Israel AeceModerator sexta-feira, 30 de outubro de 2009 00:48
Todas as Respostas
-
Alo Marcio,
Você pode usar um parâmetro genérico no seu método:
public T Conectar<T>() {
ChannelFactory<T> factory = new ChannelFactory<T>(new NetTcpBinding(), Endereco);
T resultado = factory.CreateChannel();
((IClientChannel)resultado).Closed += delegate { factory.Close(); }; // não é estritamente necessário, mas é sempre bom fechar a fábrica se você não precisa mais dela
return resultado;
}- Sugerido como Resposta Israel AeceModerator quinta-feira, 29 de outubro de 2009 23:36
- Marcado como Resposta Israel AeceModerator sexta-feira, 30 de outubro de 2009 00:48
-