Oenning 0 Denunciar post Postado Março 8, 2009 Obs.: Caso você não conheça Extension Methods, sugiro dar uma olhada neste tópico (http://forum.imasters.com.br/index.php?showtopic=332967) antes de prosseguir. Imagine o cenário, você tem alguma rotina no seu código que possui diversas condições OR encadeadas, por exemplo: string cargo = "Administrador"; if ((cargo == "Administrador") || (cargo == "Presidente") || (cargo == "Vice-Presidente") || (cargo == "Diretor")) { //Você tem permissão de acesso }O que acontece se amanhã o faxineiro também tiver permissão? Lá vai você inserir mais uma condição, além do código ficar extremamente cansativo, é fácil se perder. Quem conhece linguagem de banco de dados sabe como é bom poder usar o IN. Ao invés de SELECT * FROM aluno WHERE sobrenome = 'Silva' OR sobrenome = 'Oenning' OR sobrenome = 'Souza'Você escreve SELECT * FROM aluno WHERE sobrenome IN ('Silva', 'Oenning', 'Souza')Além de reduzar o tamanho da query, facilita a compreensão. Seria interessante se tivessemos essa funcionalidade no .Net, mas desconheço algo semelhante. Com extensions methods podemos chegar em um resultado bastante útil, veja a implementação. public static class ObjectExtension { public static bool In(this object obj, params object[] objects) { if (objects == null || obj == null) return false; object found = objects.FirstOrDefault(o => o.GetType().Equals(obj.GetType()) && o.Equals(obj)); return (found != null); } } Veja que o meu método está inserindo um método chamado In em todas as instâncias que derivem de object. Tudo deriva de object, até mesmo as structs e enums, isso significa que qualquer variável terá esse novo comportamento. Veja alguns exemplos de uso. string cargo = "Administrador"; if (cargo.In("Administrador", "Presidente", "Vice-Presidente", "Diretor")) { //Você tem permissão de acesso } DateTime dataDePagamento = //Consulta do banco if (dataDePagamento.In(DateTime.Today, new DateTime(2009, 3, 8))) { //Você fez o pagamento hoje ou no dia da mulher, você terá desconto! } if (DateTime.Today.DayOfWeek.In(DayOfWeek.Saturday, DayOfWeek.Sunday)) { //Hoje é final de semana! } Espero que seja útil. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites