//Exemplo clássico generico private static T CriarContas <T>() where T : Conta { Console.Clear(); Console.Write("Informe o número da Conta: "); int numero = Convert.ToInt32(Console.ReadLine()); if (GerenciadorDeContasBanco.ContaValidaParaCriacao(numero)) { var titular = CriarCliente <Cliente>(); Console.Write("Informe o saldo da conta: "); double saldo = Convert.ToDouble(Console.ReadLine()); // Cria um instancia generica, conforme o tipo! T conta = (T)Activator.CreateInstance(typeof(T), new object[] { numero, titular, saldo }); GerenciadorDeContasBanco.AdicionarConta(conta); GerenciadorDeContasBanco.GravarConta(conta); return(conta); } throw new ContaExistenteException(); }
private void btnCriarConta_Click(object sender, EventArgs e) { if (GerenciadorDeContasBanco.ContaValidaParaCriacao(int.Parse(txtContaNumero.Text))) { Cliente cliente; if (GerenciadorDeClientesBanco.ExisteCliente(txtClienteCPF.Text) == false) { cliente = new Cliente(txtClienteNome.Text, txtClienteRG.Text, txtClienteCPF.Text, dtpClienteDataNascimento.Value); GerenciadorDeClientesBanco.AdicionarCliente(cliente); GerenciadorDeClientesBanco.GravarCliente(cliente); } else { cliente = GerenciadorDeClientesBanco.ConsultarClientePorCPF(txtClienteCPF.Text); } switch (tipoConta) { case "1": CriarContas <ContaCorrente>(int.Parse(txtContaNumero.Text), cliente, double.Parse(txtContaSaldo.Text)); break; case "2": CriarContas <ContaPoupanca>(int.Parse(txtContaNumero.Text), cliente, double.Parse(txtContaSaldo.Text)); break; case "3": CriarContas <ContaInvestimento>(int.Parse(txtContaNumero.Text), cliente, double.Parse(txtContaSaldo.Text)); break; default: break; } } MessageBox.Show("Gravado com sucesso!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); this.PrepararTela(); }