Saya memiliki DTO yang diisi dengan membaca dari tabel DynamoDB. Katakan seperti ini saat ini:
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
}
Apakah ada praktik terbaik yang dikembangkan untuk menangani ini? Saya lebih suka menghindari konstruktor non-parameterless karena itu bermain buruk dengan ORM di Dynamo SDK (dan juga yang lain).
Rasanya aneh bagi saya untuk menulis public string Id { get; set; } = "";
karena ini tidak akan pernah terjadi karena Id
ini adalah PK dan tidak pernah bisa menjadi nol. Apa gunanya ""
bahkan jika itu entah bagaimana caranya?
Jadi ada praktik terbaik dalam hal ini?
- Haruskah saya menandai mereka semua
string?
dengan mengatakan bahwa mereka bisa nol meskipun beberapa tidak seharusnya. - Haruskah saya menginisialisasinya
Id
danName
dengan""
karena mereka harus tidak pernah batal dan menunjukkan ini maksud meskipun""
tidak akan pernah digunakan. - Beberapa kombinasi di atas
Harap dicatat: ini tentang C # 8 jenis referensi yang tidak dapat dibatalkan Jika Anda tidak tahu apa yang sebaiknya tidak dijawab.
= ""
, Anda dapat menggunakan = null!
untuk menginisialisasi properti yang Anda tahu tidak akan pernah efektif null
(ketika kompiler tidak memiliki cara untuk mengetahui hal itu). Jika Description
secara hukum dapat null
, harus dinyatakan a string?
. Atau, jika nullability memeriksa DTO lebih banyak gangguan daripada bantuan, Anda cukup membungkus jenis dalam #nullable disable
/ #nullable restore
untuk mematikan NRT untuk jenis ini saja.
#pragma warning disable CS8618
di bagian atas file.