Olá, @Ricardo Alves Paula
Não há nenhuma desvantagem em usar o construtor primário, já que ele nada mais é que um "atalho" (syntax sugar) para o construtor convencional .
Se estiver em dúvida sobre quando ou em que situação usar, pense no seguinte: sua classe fará algo além de atribuir os parâmetros de entrada no construtor?
- Se a resposta for "sim", você não precisa do construtor primário.
- Se a resposta for "não", você pode usá-lo sem qualquer desvantagem.
Seu intuito é reduzir a verbosidade de classes simples, da mesma forma que as propriedades. A intenção é permitir reduzir:
Disso:
public class Pessoa
{
private string _nome;
public string Nome
{
get
{
return _nome;
}
set
{
_nome = value;
}
}
}
Para isso:
public class Pessoa
{
public string Nome { get; set; }
}
Qual é melhor? Qual tem mais vantagem? Nenhuma das duas, pois depende do que você precisa. Ambas produzem o mesmo comportamento.
- Vai implementar comportamentos adicionais em cada propriedade? Então use o tradicional (verboso)
- Não vai implementar comportamentos adicionais em cada propriedade? Use o "atalho" (syntax sugar) da propriedade auto implementável.
Se estiver receoso por conta da discussão no StackOverflow, mencionada pelo @Pablo Garcia (Tek Experts) , fique tranquilo, pois o assunto lá tem relação com bug de IDE e não um impedimento da sintaxe.
Pode mockar tranquilo suas classes com ou sem construtor primário, pois nada muda. Nem no teste nem no injetor de dependência.