Eu tenho um DTO que é preenchido pela leitura de uma tabela do DynamoDB. Diga que parece com isso atualmente:
public class Item
{
public string Id { get; set; } // PK so technically cannot be null
public string Name { get; set; } // validation to prevent nulls but this doesn't stop database hacks
public string Description { get; set; } // can be null
}
Existe alguma prática recomendada para lidar com isso? Prefiro evitar um construtor sem parâmetros, pois isso é ruim com o ORM no Dynamo SDK (assim como com outros).
Parece-me estranho escrever public string Id { get; set; } = "";porque isso nunca acontecerá, pois Idé um PK e nunca pode ser nulo. De que serviria ""mesmo que de alguma maneira?
Então, alguma prática recomendada sobre isso?
- Devo marcar todos eles
string?para dizer que podem ser nulos, embora alguns nunca devam ser? - Devo inicializar
IdeNamecom,""porque eles nunca devem ser nulos e isso mostra a intenção, mesmo que""nunca fosse usada. - Alguma combinação de acima
Observe: trata-se de tipos de referência anuláveis em C # 8 Se você não souber o que é melhor, não responda.
= "", você pode = null!inicializar uma propriedade que você sabe que nunca será efetivamente null(quando o compilador não tem como saber disso). Se Descriptionlegalmente pode ser null, deve ser declarado a string?. Como alternativa, se a verificação de nulidade do DTO for mais incômoda do que ajuda, você pode simplesmente envolver o tipo #nullable disable/ #nullable restoredesativar os NRTs somente para esse tipo.
#pragma warning disable CS8618na parte superior do arquivo.