private void btnExecOpe_Click(object sender, EventArgs e) { TipoOperacao operacao = (TipoOperacao)cbxOperacao.SelectedItem; RespostaBase resposta = new RespostaBase() { Mensagem = string.Empty, Sucesso = false }; switch (operacao) { case TipoOperacao.Deposito: if (cbxConta.SelectedItem.GetType() == typeof(ContaCorrente)) { ContaCorrente cc = (ContaCorrente)cbxConta.SelectedItem; resposta = cc.EfetuarDeposito(double.Parse(txtValor.Text)); } else { ContaEspecial ce = (ContaEspecial)cbxConta.SelectedItem; resposta = ce.EfetuarDeposito(double.Parse(txtValor.Text)); } break; case TipoOperacao.Saque: if (cbxConta.SelectedItem.GetType() == typeof(ContaCorrente)) { ContaCorrente cc = (ContaCorrente)cbxConta.SelectedItem; resposta = cc.EfetuarSaque(double.Parse(txtValor.Text)); } else { ContaEspecial cc = (ContaEspecial)cbxConta.SelectedItem; resposta = cc.EfetuarSaque(double.Parse(txtValor.Text)); } break; } MessageBox.Show(resposta.Mensagem, resposta.Sucesso ? "Sucesso" : "Operação não efetuada", MessageBoxButtons.OK, resposta.Sucesso ? MessageBoxIcon.Information : MessageBoxIcon.Warning); }