Dúvida em parametro de método

17/08/2012

0

Preciso criar um método que me retorne uma lista e insira os valores em DataGridView. Bem isso eu já fiz e está funcionando. No meu sistema existe 3 tipos de pesquisa.

1) Geral

2) Por Id

3) Por Filtro

A terceira(Por filtro) é que está me tirando os cabelos(dos q restam). Assim: O objeto retornado, tem algumas propriedades e na pesquisa elas podem estar null, ou seja, digamos que eu tenha 5 propriedade que são 5 atributos de minha tabela do BD. A dúvida é eu criar um método que eu passe 1 ou 2 ou 3 ou 4 ou 5 ou quaisquer conbinações dessas 5 prop. Se eu faço um méto assim:

private.... meu_metodo(tipo1 param1,tipo2 param2,tipo3 param3,tipo 4 param4,tipo5 param5)

{}

E na pesquisa eu só preciso passar param3 e param 5, por exemplo, esse método estoura. Então, como eu faço isso?

Não sei se me fiz entender.
Pjava

Pjava

Responder

Posts

17/08/2012

Pjava

Vou dar o exemplo. As propriedades do objeto finder devem ser preenchida pelos parametros do método. Essa é minha dúvida: Como fazer.

private List<Entity.Skin> PesquisaFiltroSkin(Meus_Parâmetros_Aqui)
{
List<Entity.Skin> listaSkin = new List<Entity.Skin>();
Finder.Skin finder = new Finder.Skin();

finder.IdSkin = ?;
finder.IdProjeto = ?;
finder.Descricao = ?;
finder.DataInclusao = ?;
finder.DataAlteracao = ?;

listaSkin = Infrastructure.Repository.Skin.RetornarPorFiltro(finder);

return listaSkin;
}
Responder

17/08/2012

Joel Rodrigues

Você pode usar parâmetros opcionais. Veja um exemplo:
        public List<Pessoa> ListarClientes(string nome = null, int id = 0, string telefone = null)
        {
List<Pessoa> lista = new List<Pessoa>();
            if (nome != null)
            {
                //adicionar filtro por nome
            }
            if (id > 0)
            {
                //adicionar filtro por id
            }
            if (telefone != null)
            {
                //adicionar filtro por telefone
            }
            return lista;
        }


Porém, para você passar o segundo parâmetro, precisa passar o primeiro. Para passar o terceiro, precisa passar o segundo, etc.

Algumas chamadas possíveis:
Listar(); //nenhum parâmetro
Listar(´´fulano´´); //nome
Listar(´´fulano´´, 1);//nome + id
Listar(´´fulano´´, 1, ´´2222-2222´´);//nome + id + telefone


Caso você não queira usar um parâmetro, mas deseje passa um subsequente, pode passar para ele um valor padrão como null ou 0 (no caso).

Abraço.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar