Olá, a partir da aula passada, fiz o seguinte código:
namespace Caelum.CaixaEletronico.Clientes
{
class Cliente
{
public string Nome { get; set; }
public string rg;
public string cpf;
public string endereco;
public int idade;
public bool EEmancipado { get; set; }
public Cliente(string nome)
{
this.Nome = nome;
}
public Cliente()
{
}
public bool EhMaiorDeIdade()
{
return this.idade >= 18;
}
public bool PodeAbrirConta()
{
var maiorDeIdade = EhMaiorDeIdade();
var emancipado = (this.EEmancipado);
var temCPF = !string.IsNullOrEmpty(this.cpf);
return (maiorDeIdade || emancipado) && temCPF;
}
public override bool Equals(object obj)
{
Cliente cliente = (Cliente)obj;
return this.rg.Equals(cliente.rg);
}
Porém na hora de executar o código do Form, quando chamo para o botão realizar o Equals, o compilador diz que houve um erro de casting, onde não pude converter um obj para um tipo Cliente.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Caelum.CaixaEletronico.Contas;
using Caelum.CaixaEletronico.Clientes;
using Caelum.CaixaEletronico.Excecoes;
namespace CaixaEletronico
{
public partial class Form1 : Form
{
Conta conta = new Conta();
public Form1()
{
InitializeComponent();
}
private void mostraConta(Conta conta)
{
textoNumero.Text = Convert.ToString(conta.Numero);
textoTitular.Text = conta.Titular.Nome;
textoSaldo.Text = Convert.ToString(conta.Saldo);
}
private void Form1_Load(object sender, EventArgs e)
{
conta.Titular = new Cliente();
conta.Titular.Nome = "Victor";
conta.Numero = 1;
conta.Deposita(500);
mostraConta(conta);
}
private void button1_Click(object sender, EventArgs e)
{
string textoValorDoSaque = textoValorSaque.Text;
double valorDoSaque = Convert.ToDouble(textoValorDoSaque);
// O try executa o código que PODE pegar uma exceção e o catch faz o tratamento do erro
try
{
conta.Saca(valorDoSaque);
MessageBox.Show("Dinheiro liberado.");
}
catch (SaldoInsuficienteException exception)
{
MessageBox.Show("Saldo insuficiente.");
}
catch (ArgumentException exception)
{
MessageBox.Show("Valor do saque inválido.");
}
mostraConta(conta);
}
private void button2_Click(object sender, EventArgs e)
{
var cliente1 = new Cliente()
{
Nome = "Guilherme",
rg = "123456-7"
};
var cliente2 = new Cliente()
{
Nome = "Guilherme",
rg = "123456-7"
};
MessageBox.Show("São iguais? " + cliente1.Equals(cliente2.rg));
}
}
}
O que fazer para resolver este problema?