Passagem de parâmetros por referência em objetos mapeados com AutoMapper em C#


Contextualizando a passagem de parâmetro por referência

A passagem por referência em permite que, a grosso modo, você passe uma variável por parâmetro em uma função, faça as modificações nessa variável e a variável volta com os valores modificados sem precisar retornar a função.

Por exemplo:


Observe que passo a variável "minhaVariavel" com valor 5 e dentro da função ela recebe o valor 10 e quando retorna ao programa principal e fica com o valor atualizado dentro da função.

Lembrando que em C#, não é possível usar diretamente variáveis por referência (ref ou out) em métodos assíncronos (async). Isso ocorre porque métodos async são transformados em uma state machine pelo compilador, e o uso de ref e out não é compatível com essa transformação.

Utilizando operador "ref" com método "map"

Na verdade, você não pode usar o operador ref com o método Map do AutoMapper. O método Map não aceita uma referência para o objeto de destino como parâmetro.

Em outras palavras, você não pode utilizar a seguinte linha de codigo:


Se você deseja modificar o objeto mapeado pelo AutoMapper dentro do método _saldoService.ValidarInserir, uma alternativa é atribuir o objeto mapeado a uma variável separada e, em seguida, passar essa variável como parâmetro para o método ValidarInserir. Veja um exemplo:


Dessa forma, você cria uma cópia do objeto mapeado e a passa como parâmetro para o método ValidarInserir. Qualquer modificação feita em saldoMapeado dentro do método ValidarInserir não será refletida no objeto saldoModel.

Comentários