none
Simples duvida sobre Generics RRS feed

  • Pergunta

  • Fala Pessoal, tranquilo ?

    Uma duvida simples sobre generics, estou tentanto criar um método que recebe uma lista generica mas eu eu nao sei o tipo da lista, entao tento usar o T, deste jeit : List<T> obj porém o compilador nao reconhece o T , como faço para usar a lista deste jeit ? precisa de algum namespace além do system.collections .generics ?

    Abraços.

    sexta-feira, 23 de dezembro de 2011 11:12

Respostas

  • X, bom dia. Entendi, veja o exemplo:

    //declaração
    static void Swap<T>(T obj1, T obj2)
    {
    
    }
    
    //chamada
    ObjetodeNegocio a = new ObjetodeNegocio();
    ObjetodeNegocio b = new ObjetodeNegocio();
    Swap<ObjetodeNegocio>(a, b);
    

    Atenciosamente, 

    Onofre A. Juvencio Junior

    (Se a achou útil o post, por favor, marque-o como resposta)

    • Marcado como Resposta x.programmer sexta-feira, 23 de dezembro de 2011 12:43
    sexta-feira, 23 de dezembro de 2011 12:26

Todas as Respostas

  • X, bom dia. Segue exemplo simples:
    public Dictionary<string> Teste(bool blnTeste)
            {
    		Dictionary<string> lst = new Dictionary<string>();
    		
    lst.Add("Teste1");
    lst.Add("Teste1");
    
                return lst;
    
            }
    


    Atenciosamente, 
    Onofre A. Juvencio Junior
    (Se a achou útil o post, por favor, marque-o como resposta)
    sexta-feira, 23 de dezembro de 2011 11:50
  • Creio que você nao entendeu a pergunta rs.

    Eu sei usar generics, mas o tipo da lista é dinamico, ou seja no lugar do string do Dictionary que vc criou teria que ser uma variavel,

    para isso existe o List<T> , este T assume qualquer tipo que vc passar, posso passar uma hora string e outra hora int sem problemas.

    O problema é que o sistema nao esta reconhecendo o T queria saber como faço para poder usar o T.

    sexta-feira, 23 de dezembro de 2011 11:57
  • Usa List<object>.
    sexta-feira, 23 de dezembro de 2011 12:00
  • Olá amigo,

    Já tentou usar Interfaces?  Poderia dar um pouco de trabalho mas pense no seguinte: Faça uma lista do tipo da interfaces, neste caso tu não teria problema ao pegar essa lista. Isso se justifica se os objetos forem teus (objetos de negócio).

    Agora se daqui a pouco a List for de Integer, string, etc tente usar List<object>.

    Abraços !

     

    sexta-feira, 23 de dezembro de 2011 12:04
  • Fala Lord,

    Os objetos sao de negocio sim, sao 8 classes, existe um factory que, ao passar uma classe no parametro de um método, este parametro de criar uma lista do tipo informado, entende ? Usando object teria que efetuar boxing e unboxng manual certo ?

    teria de ser algo neste sentido ?

     

    public void Validar(string fileType, List<T> list)

     

    Esta é a assinatura do método, quando chamar este método vou passar uma lista de algum tipo que eu nao, o T assume o tipo passado, porém esse T nao ta sendo reconhecido pelo sistema.

    sexta-feira, 23 de dezembro de 2011 12:18
  • X, bom dia. Entendi, veja o exemplo:

    //declaração
    static void Swap<T>(T obj1, T obj2)
    {
    
    }
    
    //chamada
    ObjetodeNegocio a = new ObjetodeNegocio();
    ObjetodeNegocio b = new ObjetodeNegocio();
    Swap<ObjetodeNegocio>(a, b);
    

    Atenciosamente, 

    Onofre A. Juvencio Junior

    (Se a achou útil o post, por favor, marque-o como resposta)

    • Marcado como Resposta x.programmer sexta-feira, 23 de dezembro de 2011 12:43
    sexta-feira, 23 de dezembro de 2011 12:26
  • Exatamente isso, valeu.
    sexta-feira, 23 de dezembro de 2011 12:43