none
Métodos com multiplos retornos RRS feed

  • Pergunta

  • Bom dia pessoal queria criar um métodos que poderia retornar varias tipo de informação, tipo datatable ou dataset ou array, ou string, não expecificando o tipo na hora de criar o método existem essa possibilidade tipo

     

    public static -------- getDados(string strSql)

    {

    }

    esse método pode retornar um dataset, ou um datatale, ou um array ou um objeto tem como?

    quarta-feira, 24 de agosto de 2011 11:38

Respostas

  • véi tu pode utilizar o tipo Genéric ele se torna o q vc quiser no fim das contas tu vai fazer mais ou menos isso aqui:

        // Este é um método de retorno Genérico tu que vai determinar
        // qual o seu retorno no tipo T
        public static T GetDados<T>(string strSql)
        {
    
          //processa aqui processa ali
          var objConsulta = TeuMetodoDeConsulta(strSql);
          object objConvertido = h;
          T retorno = (T)objConvertido;
          return retorno;
        }
    
        // voce o chama assim
        public static void Main()
        {
          var retorno = GetDados<DataSet>("tua str");
        }
        // Vc vera q o retorno setado será de um dataset dai vai contar
        // tua implementação
    



     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    • Marcado como Resposta Deivite Souza quarta-feira, 24 de agosto de 2011 14:45
    quarta-feira, 24 de agosto de 2011 14:28

Todas as Respostas

  • Deivite,

    conforme seu post anterior, http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/3a53ebbb-0592-467a-b036-c4fd2072190c, o que você está buscando seria algo parecido com polimorfismo, exceto pelo fato que o que você quer retornar são tipos completamente distintos.

    Para você fazer isso você teria que fazer uma programação de tipo genérico, testando o tipo de parametro pedido e programando todas as suas funções dentro de uma, tornando inviável.

     


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C# Junior
    MCTS Windows 7
    quarta-feira, 24 de agosto de 2011 12:09
  • Olá Deivite,

    Vc pode fazer isso de duas maneiras:

    1) Criar uma classe de contexto, adicionar uma propriedade para cada tipo de dados que vc desejar retornar, criar uma instância dessa classe dentro de seu método e retornar pelo método.

    2) Usar parâmetro por refência. (http://msdn.microsoft.com/en-us/library/s6938f28.aspx)

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    quarta-feira, 24 de agosto de 2011 12:12
  • deivite,

    o que tu ta procurando eh generics,

    da uma olhada:

    http://msdn.microsoft.com/pt-br/library/512aeb7t.aspx

    quarta-feira, 24 de agosto de 2011 14:19
  • véi tu pode utilizar o tipo Genéric ele se torna o q vc quiser no fim das contas tu vai fazer mais ou menos isso aqui:

        // Este é um método de retorno Genérico tu que vai determinar
        // qual o seu retorno no tipo T
        public static T GetDados<T>(string strSql)
        {
    
          //processa aqui processa ali
          var objConsulta = TeuMetodoDeConsulta(strSql);
          object objConvertido = h;
          T retorno = (T)objConvertido;
          return retorno;
        }
    
        // voce o chama assim
        public static void Main()
        {
          var retorno = GetDados<DataSet>("tua str");
        }
        // Vc vera q o retorno setado será de um dataset dai vai contar
        // tua implementação
    



     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    • Marcado como Resposta Deivite Souza quarta-feira, 24 de agosto de 2011 14:45
    quarta-feira, 24 de agosto de 2011 14:28
  • soh tem um problema esse cast  T retorno = (T)objConvertido;

    nao vai funcionar para array...

    quarta-feira, 24 de agosto de 2011 15:08
  • Funciona sim T é qlqr coisa inclusive um array se eu quiser ^^ por isso de ser GenericType tipo genérico
     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    sexta-feira, 26 de agosto de 2011 13:24
  • eu sei bem o que eh um genericType por isso q eu sugeri antes de ti pra usa generic, mas lembrando q o q o cara qr fazer é meio impossivel pra faze direto,

    mas com generic, por ex tu pode fazer um cast de dataset pra datatable,

    mas cara, tu ja tento faze um cast de array pra dataset?

    é só pensa um poco, como tu vai transforma um array em data set, em um cast direto??

     

    sexta-feira, 26 de agosto de 2011 13:32