Estou usando C# 12. Em C# 12 posso usar o construtor primário:
public class UserService(IUnitOfWork uow) : IUserService
{
}
Antes do C# 12 eu usava verificação nula para itens que injetava no construtor:
public class UserService : IUserService
{
private readonly IUnitOfWork _uow;
public UserService(IUnitOfWork uow)
{
ArgumentNullException.ThrowIfNull(uow);
_uow = uow;
}
}
Agora, como posso fazer a verificação nula em C# 12?
É necessário usar o fail fast com o construtor primário?
Pelo que eu sei, se você quiser mudar para construtores primários, uma das opções mais fáceis seria introduzir campo/propriedade:
Observe que você também pode nomear o campo da mesma forma que o parâmetro do construtor (
_uow
->uow
), se não quiser sobrecarregar sua classe com um nome adicional (como sugerido por Heinzi ), que tem o benefício adicional de sombrear o parâmetro ctor primário mutável por um campo imutável.Você também pode encapsular a lógica no método auxiliar. Algo nesse sentido: