none
Dúvida sobre classe ? RRS feed

  • Pergunta

  • Boas senhores, uso vs2008 c#

    Tenho 3 classes (são mais, mas para o exemplo digo 3), as classes retornam id e descrição entre outros atributos.

    Populo 3 combos e para cada um fiz uma  função  passando um list da classe, então fiquei com 3 funções.

    Ex. funcao1(classe1), funcao2(classe2),funcao3(classe3)

    Gostaria de transformar a função em uma só, onde passaria para a função a classe de forma genérica...

    Alguém teria a forma correta para fazer isso?

    Obrigado

    quinta-feira, 15 de agosto de 2013 14:29

Respostas

  •     class Class1 : Pai<Class1>
        {
        }
    
        class Class2 : Pai<Class2>
        {
        }
    
        class Class3 : Pai<Class3>
        {
        }
    
        class Pai<T>
        {
            public void Funcao(List<T> lista)
            {
                //Descrever metodo
            }
        }

    • Marcado como Resposta DET1 quinta-feira, 15 de agosto de 2013 18:17
    quinta-feira, 15 de agosto de 2013 14:50
  • public class TestePai { public teste teste {get;set;} public teste1 teste1 {get;set;} public teste2 teste2{get;set;} } public class teste { public list<teste> teste; } public class teste1 { public list<teste1> teste1; } public class teste2 { public list<teste2> teste2; }

    funcao(TestePai.teste); ou funcao(TestePai.teste1) ou funcao(TestePai.teste2) e por ai vai.

    se ajudou marca como resposta. 

    Abrass

    • Marcado como Resposta DET1 quinta-feira, 15 de agosto de 2013 18:17
    quinta-feira, 15 de agosto de 2013 16:54
  • Olá,

    Uma alternativa:

    interface ISuaInterface
        {
            int ID { get; set; }
            string Nome { get; set; }
        }
    
    
        class Class1 : ISuaInterface
        {
            public int ID { get; set; }
            public string Nome { get; set; }
        }
    
        class Class2 : ISuaInterface
        {
            public int ID { get; set; }
            public string Nome { get; set; }
        }
    
        class Class3 : ISuaInterface
        {
            public int ID { get; set; }
            public string Nome { get; set; }
        }
    
    
        class Util
        {
            public static  void PopularDrop(DropDownList DropDown, List<ISuaInterface> lista)
            {
                          
                DropDown.DataSource = lista;
                DropDown.DataValueField = "ID";
                DropDown.DataTextField = "Nome";
                DropDown.DataBind();
            }
        }

    Usando:

    var lista = new List<ISuaInterface>() { 
    new Class1() { ID = 1,  Nome = "Joao" },
    new Class1() { ID = 2,  Nome = "Maria" },
    new Class1() { ID = 3,  Nome = "Jose" }
    
    
    };
    
    Util.PopularDrop(seudropdown, lista);
    

    • Marcado como Resposta DET1 quinta-feira, 15 de agosto de 2013 18:17
    quinta-feira, 15 de agosto de 2013 17:19

Todas as Respostas

  •     class Class1 : Pai<Class1>
        {
        }
    
        class Class2 : Pai<Class2>
        {
        }
    
        class Class3 : Pai<Class3>
        {
        }
    
        class Pai<T>
        {
            public void Funcao(List<T> lista)
            {
                //Descrever metodo
            }
        }

    • Marcado como Resposta DET1 quinta-feira, 15 de agosto de 2013 18:17
    quinta-feira, 15 de agosto de 2013 14:50
  • public class TestePai { public teste teste {get;set;} public teste1 teste1 {get;set;} public teste2 teste2{get;set;} } public class teste { public list<teste> teste; } public class teste1 { public list<teste1> teste1; } public class teste2 { public list<teste2> teste2; }

    funcao(TestePai.teste); ou funcao(TestePai.teste1) ou funcao(TestePai.teste2) e por ai vai.

    se ajudou marca como resposta. 

    Abrass

    • Marcado como Resposta DET1 quinta-feira, 15 de agosto de 2013 18:17
    quinta-feira, 15 de agosto de 2013 16:54
  • Olá,

    Uma alternativa:

    interface ISuaInterface
        {
            int ID { get; set; }
            string Nome { get; set; }
        }
    
    
        class Class1 : ISuaInterface
        {
            public int ID { get; set; }
            public string Nome { get; set; }
        }
    
        class Class2 : ISuaInterface
        {
            public int ID { get; set; }
            public string Nome { get; set; }
        }
    
        class Class3 : ISuaInterface
        {
            public int ID { get; set; }
            public string Nome { get; set; }
        }
    
    
        class Util
        {
            public static  void PopularDrop(DropDownList DropDown, List<ISuaInterface> lista)
            {
                          
                DropDown.DataSource = lista;
                DropDown.DataValueField = "ID";
                DropDown.DataTextField = "Nome";
                DropDown.DataBind();
            }
        }

    Usando:

    var lista = new List<ISuaInterface>() { 
    new Class1() { ID = 1,  Nome = "Joao" },
    new Class1() { ID = 2,  Nome = "Maria" },
    new Class1() { ID = 3,  Nome = "Jose" }
    
    
    };
    
    Util.PopularDrop(seudropdown, lista);
    

    • Marcado como Resposta DET1 quinta-feira, 15 de agosto de 2013 18:17
    quinta-feira, 15 de agosto de 2013 17:19
  • Obrigado pelo retorno...

    Para isso funcionar todas as classes terão que herdar/implementar (não sei o nome correto)  de pai...e pai terá que ter todas as assinaturas de todas as classes?

    Correto?

    quinta-feira, 15 de agosto de 2013 18:14
  • Cara no caso que eu mandei pra você, nem precisa herança não. 

    Basta adicionar classes "filho" como propriedades na classe "pai" e já era.

    Abras.

    quinta-feira, 15 de agosto de 2013 18:32