J'ai un DTO qui est rempli en lisant une table DynamoDB. Disons que cela ressemble à ceci actuellement:
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-t-il des meilleures pratiques en cours d'élaboration pour y faire face? Je préfère éviter un constructeur sans paramètre car cela joue mal avec l'ORM dans le SDK Dynamo (ainsi que d'autres).
Cela me semble étrange d'écrire public string Id { get; set; } = "";
car cela ne se produira jamais car il Id
s'agit d'un PK et ne peut jamais être nul. Quelle serait l'utilité ""
même si elle le faisait de toute façon?
Alors, quelle est la meilleure pratique à ce sujet?
- Dois-je les marquer tous
string?
pour dire qu'ils peuvent être nuls même si certains ne devraient jamais l'être. - Dois-je initialiser
Id
etName
avec""
car ils ne doivent jamais être nuls et cela montre l'intention même si""
elle ne sera jamais utilisée. - Une combinaison de ce qui précède
Veuillez noter: il s'agit de types de référence annulables C # 8 Si vous ne savez pas ce qu'il vaut mieux, ne répondez pas.
= ""
, vous pouvez utiliser = null!
pour initialiser une propriété que vous savez ne sera jamais efficace null
(lorsque le compilateur n'a aucun moyen de le savoir). Si cela Description
peut être légalement possible null
, il doit être déclaré a string?
. Alternativement, si la vérification de la nullité pour le DTO est plus gênante que l'aide, vous pouvez simplement envelopper le type dans #nullable disable
/ #nullable restore
pour désactiver les NRT pour ce type uniquement.
#pragma warning disable CS8618
en haut du fichier.