Exemplo n.º 1
0
        static void Main(string[] args)
        {
            //1ª Parte
            //Exemplos.Executa();


            //2ª Parte
            //Entrando com dados iniciais
            Console.Write("Entre com a idade mínima: ");
            int IdadeMinima = Convert.ToInt32(Console.ReadLine());

            Console.Write("Entre com a idade máximo: ");
            int IdadeMaxima = Convert.ToInt32(Console.ReadLine());

            Func <int, bool> Idade = f => f >= IdadeMaxima;

            //Instanciando e criado evento
            Evento1 evento1 = new Evento1();

            evento1.LimiteIdade += ExecutaEvento;

            //----------------------------------------------------------------------------------------------------------------------------------
            // Instanciando Objetos
            Cliente[] arrayClientes = new Cliente[]
            {
                new Cliente()
                {
                    Id = 1, Nome = "Fulano da Silva", Email = "*****@*****.**", Idade = 25
                },
                new Cliente()
                {
                    Id = 2, Nome = "Ciclano de Oliveira", Email = "*****@*****.**", Idade = 15
                },
                new Cliente()
                {
                    Id = 3, Nome = "Locha de Souza", Email = "*****@*****.**", Idade = 13
                },
                new Cliente()
                {
                    Id = 4, Nome = "Dunha Costa", Email = "*****@*****.**", Idade = 12
                },
                new Cliente()
                {
                    Id = 5, Nome = "Nhola Bueno", Email = "*****@*****.**", Idade = 31
                },
                new Cliente()
                {
                    Id = 6, Nome = "Beltrano Dias", Email = "*****@*****.**", Idade = 44
                }
            };

            Fornecedor[] arrayFornecedores = new Fornecedor[]
            {
                new Fornecedor()
                {
                    Id = 1, Nome = "Genésio Galvão", Email = "*****@*****.**", Idade = 55
                },
                new Fornecedor()
                {
                    Id = 2, Nome = "Joaquim dos Santos", Email = "*****@*****.**", Idade = 17
                },
                new Fornecedor()
                {
                    Id = 3, Nome = "José de Oliveira Junior", Email = "*****@*****.**", Idade = 16
                },
                new Fornecedor()
                {
                    Id = 4, Nome = "Maria Esteves Costa", Email = "*****@*****.**", Idade = 19
                },
                new Fornecedor()
                {
                    Id = 5, Nome = "Manuel Bento Silva", Email = "*****@*****.**", Idade = 25
                },
                new Fornecedor()
                {
                    Id = 6, Nome = "Francisco Cesar Beltrão", Email = "*****@*****.**", Idade = 22
                }
            };

            //-------------------------------------------------------------------------------------
            List <Cliente> listaClientes = InstanciarObjeto <Cliente> .Executa(arrayClientes).Result;

            List <Fornecedor> listaFornecedores = InstanciarObjeto <Fornecedor> .Executa(arrayFornecedores).Result;

            Imprime.Mensagem("Em progresso...");

            //----------------------------------------------------------------------------------------------------------------------------------

            Imprime.Separador();
            Imprime.Mensagem("Listando Clientes");
            Imprime.Separador();
            Imprime.Espaco();

            ImprimeObjeto <Cliente> impClientes = Imprime.Entidade <Cliente>;

            impClientes(listaClientes);
            Imprime.Espaco();

            var listaClienteIdadeMaiores = listaClientes.Where(c => Idade(c.Idade)).Select(c => c).ToList();

            evento1.OnLimite <Cliente>(listaClienteIdadeMaiores);

            //----------------------------------------------------------------------------------------------------------------------------------
            Imprime.Separador();
            Imprime.Mensagem("Listando Clientes Filtrados!");
            Imprime.Separador();
            Imprime.Espaco();

            List <Cliente> listaFitradaClientes = FiltrarObjeto <Cliente> .Executa(listaClientes, IdadeMinima);

            impClientes(listaFitradaClientes);

            //----------------------------------------------------------------------------------------------------------------------------------
            Imprime.Espaco();
            Imprime.Separador();
            Imprime.Mensagem("Listando Fornecedores");
            Imprime.Separador();
            Imprime.Espaco();

            ImprimeObjeto <Fornecedor> impFornecedores = Imprime.Entidade <Fornecedor>;

            impFornecedores(listaFornecedores);
            Imprime.Espaco();

            var listaFornecedoresIdadeMaiores = listaFornecedores.Where(f => Idade(f.Idade)).Select(f => f).ToList();

            evento1.OnLimite <Fornecedor>(listaFornecedoresIdadeMaiores);

            //----------------------------------------------------------------------------------------------------------------------------------
            Imprime.Separador();
            Imprime.Mensagem("Listando Fornecedores Filtrados!");
            Imprime.Separador();
            Imprime.Espaco();

            List <Fornecedor> listaFitradaFornecedores = FiltrarObjeto <Fornecedor> .Executa(listaFornecedores, IdadeMinima);

            impFornecedores(listaFitradaFornecedores);

            /*
             * //3ª Parte
             * // Define a estrutura da classe generica
             * Dictionary<string, Type> dicionario = new Dictionary<string, Type>();
             * dicionario.Add("Id", typeof(int));
             * dicionario.Add("Nome", typeof(string));
             * dicionario.Add("Email", typeof(string));
             * dicionario.Add("Idade", typeof(int));
             *
             * // Instancia uma classe dinamicamente
             * GenericaService genericaservice = new GenericaService();
             * genericaservice.Fields = dicionario;
             * genericaservice.CreateNewObject();
             * Generica generica = genericaservice.Generica;
             *
             * List<Generica> lGenerica = new List<Generica>();
             * //lGenerica.Add(new Generica() { generica.GetType().GetProperty("Id").SetValue(generica, 1),
             * //								});
             *
             * //Adiciona Itens a classe e na lista
             * generica.GetType().GetProperty("Id").SetValue(generica, 1);
             * generica.GetType().GetProperty("Nome").SetValue(generica, "Fabio Lazari");
             * generica.GetType().GetProperty("Email").SetValue(generica, "*****@*****.**");
             * generica.GetType().GetProperty("Idade").SetValue(generica, 46);
             * lGenerica.Add(generica);
             *
             * //Adiciona o segundo item
             * generica.GetType().GetProperty("Id").SetValue(generica, 2);
             * generica.GetType().GetProperty("Nome").SetValue(generica, "Ciclano de Oliveira");
             * generica.GetType().GetProperty("Email").SetValue(generica, "*****@*****.**");
             * generica.GetType().GetProperty("Idade").SetValue(generica, 15);
             * lGenerica.Add(generica);
             *
             * //Imprimindo a lista
             * lGenerica.ForEach(l => Console.WriteLine(l.GetType().GetProperty("Id").GetValue(l).ToString() + " - " +
             *                                         l.GetType().GetProperty("Nome").GetValue(l).ToString() + " - " +
             *                                         l.GetType().GetProperty("Email").GetValue(l).ToString() + " - " +
             *                                         l.GetType().GetProperty("Idade").GetValue(l).ToString()
             *                              ));
             *
             *      //new Generica() { Id = 3, Nome = "Locha de Souza", Email = "*****@*****.**", Idade = 13 },
             *      //new Generica() { Id = 4, Nome = "Dunha Costa", Email = "*****@*****.**", Idade = 12 },
             *      //new Generica() { Id = 5, Nome = "Nhola Bueno", Email = "*****@*****.**", Idade = 31 },
             *      //new Generica() { Id = 6, Nome = "Beltrano Dias", Email = "*****@*****.**", Idade = 44 }
             */

            Console.ReadLine();
        }
Exemplo n.º 2
0
        public static void Executa()
        {
            Imprime imp = ImprimeMessage;
            //imp += ImprimeMessage;

            List <Cliente> clientes = new List <Cliente>();

            clientes.Add(new Cliente()
            {
                Id = 1, Nome = "Fulano da Silva", Email = "*****@*****.**", Idade = 25
            });
            clientes.Add(new Cliente()
            {
                Id = 2, Nome = "Ciclano de Oliveira", Email = "*****@*****.**", Idade = 15
            });
            clientes.Add(new Cliente()
            {
                Id = 3, Nome = "Locha de Souza", Email = "*****@*****.**", Idade = 18
            });
            clientes.Add(new Cliente()
            {
                Id = 4, Nome = "Dunha Costa", Email = "*****@*****.**", Idade = 12
            });
            clientes.Add(new Cliente()
            {
                Id = 5, Nome = "Nhola Bueno", Email = "*****@*****.**", Idade = 31
            });
            clientes.Add(new Cliente()
            {
                Id = 6, Nome = "Beltrano Dias", Email = "*****@*****.**", Idade = 40
            });

            imp("Lista de Clientes Total:");

            /*	foreach (var c in clientes)
             *      {
             *              Console.WriteLine(c);
             *      }*/

            //clientes.ForEach(c => Console.WriteLine(c));

            ImprimeClientes impClientes = ImprimeCliente;

            impClientes(clientes);

            Console.WriteLine();
            Console.WriteLine(new string('-', 40));
            Console.WriteLine();

            // Invocando metodos da instancia do delegate impClientes


            foreach (var del in impClientes.GetInvocationList())
            {
                Console.WriteLine(del.Method);
            }

            Console.WriteLine();
            Console.WriteLine(new string('-', 40));
            Console.WriteLine();

            // Delegade Func para filtrar os maiores de 18 anos
            Func <int, bool> maiorIdade = f => f >= 18;

            // Um novo delegate Func usando como entrada a lista de clientes e o delegate func criado acima como filtro
            Func <List <Cliente>, Func <int, bool>, List <Cliente> > ListaClientes = (list, filter) =>
            {
                //List<Cliente> result = new List<Cliente>();

                /*
                 * foreach (Cliente a in list)
                 * {
                 *      if (filter(a.Idade))
                 *      {
                 *              result.Add(new Cliente()
                 *              {
                 *                      Id = a.Id,
                 *                      Nome = a.Nome,
                 *                      Email = a.Email,
                 *                      Idade = a.Idade
                 *              });
                 *      }
                 * }
                 */
                /*
                 * list.ForEach(a =>
                 * {
                 *      if (filter(a.Idade))
                 *      {
                 *              result.Add(new Cliente()
                 *              {
                 *                      Id = a.Id,
                 *                      Nome = a.Nome,
                 *                      Email = a.Email,
                 *                      Idade = a.Idade
                 *              });
                 *      }
                 * });
                 */
                //	return result;

                /*
                 * return list.Where(l => filter(l.Idade))
                 *                               .Select(c => new Cliente()
                 *                               {
                 *                                       Id = c.Id,
                 *                                       Nome = c.Nome,
                 *                                       Email = c.Email,
                 *                                       Idade = c.Idade
                 *                               }).ToList();
                 */

                return(list.Where(l => filter(l.Idade))
                       .Select(c => c).ToList());
            };

            // Executando a chamado do delegate passando a lista de clientes e o filtro(outro func)
            List <Cliente> minhaLista = ListaClientes(clientes, maiorIdade);

            // Imprimindo na tela a lista de clientes filtrada usando o metodo ImprimeCliente que usa o delegate action
            impClientes(minhaLista);

            Console.ReadLine();
        }