none
Cliente consumindo um WCF? RRS feed

  • 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?



    quinta-feira, 29 de outubro de 2009 16:33

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;
    }
    quinta-feira, 29 de outubro de 2009 16:58

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;
    }
    quinta-feira, 29 de outubro de 2009 16:58
  • Beleza carlos deu certo, muito obrigao.
    quinta-feira, 29 de outubro de 2009 17:05