Mam DTO, który jest wypełniany przez czytanie z tabeli DynamoDB. Powiedzmy, że obecnie wygląda to tak:
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
}
Czy istnieją jakieś najlepsze praktyki dotyczące radzenia sobie z tym? Wolałbym unikać nieparametrycznego konstruktora, ponieważ źle działa on z ORM w zestawie Dynamo SDK (podobnie jak inne).
Wydaje mi się dziwne pisanie, public string Id { get; set; } = "";ponieważ to się nigdy nie wydarzy, ponieważ Idjest to PK i nigdy nie może być zerowe. Jaki byłby użytek, ""gdyby tak się stało?
Więc jakaś najlepsza praktyka w tym zakresie?
- Czy powinienem zaznaczyć je wszystkie,
string?aby powiedzieć, że mogą być zerowe, chociaż niektórzy nigdy nie powinni. - Powinienem zainicjować
Idi zaNamepomocą,""ponieważ nigdy nie powinny być zerowe, a to pokazuje zamiar, chociaż""nigdy nie zostanie użyty. - Niektóre kombinacje powyższych
Uwaga: chodzi o typy zerowalne C # 8. Jeśli nie wiesz, co najlepiej, nie odpowiadaj.
= ""możesz użyć = null!do zainicjowania właściwości, o której wiesz, że nigdy tak naprawdę nie będzie null(gdy kompilator nie ma możliwości, aby to wiedzieć). Jeśli jest Descriptionto zgodne z prawem null, należy je zadeklarować string?. Alternatywnie, jeśli sprawdzanie zerowości dla DTO jest bardziej uciążliwe niż pomoc, możesz po prostu owinąć ten typ w #nullable disable/, #nullable restoreaby wyłączyć NRT tylko dla tego typu.
#pragma warning disable CS8618w górną część pliku.