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.
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
Curtir tópico
+ 0
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;
}
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:
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:
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.
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
Clique aqui para fazer login e interagir na Comunidade :)