2
respostas

Passando o nameof pra frente

Na aula 3(ex4), foi dito que o nameof serviria para obrigar a mudança no argumento paramName da exceção ArgumentException em caso de mudança do nome do argumento, mas a seguir, no Program.cs, ainda há o bloco de código no catch:

if(ex.ParamName == 'numero') {

}

Na teoria, também seria obrigatório mudar nesse campo pois se ocorrer alteração no nome do argumento, esse bloco nunca seria executado caso alguém não se lembre que também deve-se mudar essa string. Há algum método para contornar isso?

2 respostas

Olá Renan!

Neste caso, pode se usar o operador nameof()para essa finalidade. A diferença é que vai ficar assim:

if(ex.ParamName == nameof(ContaCorrente.Numero)) {

}

Caso tenha alguma alteração nos campos da classe ContaCorrente, o compilador vai sublinhar onde não exista algum campo com o mesmo nome.

Espero ter ajudado!

Mas neste caso estaríamos pegando o valor da propriedade da classe, e não do argumento do método. E também, o catch não enxergaria o escopo da onde a classe foi criada(dentro do try), caindo no problema de ter que subir um escopo. Estava pensando em passar o objeto inteiro como argumento no throw mas não cheguei a fazer os testes