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
Id
eName
com,""
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 Description
legalmente 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 restore
desativar os NRTs somente para esse tipo.
#pragma warning disable CS8618
na parte superior do arquivo.