Я активував цю функцію в проекті з класами об'єктів передачі даних (DTO), як зазначено нижче:
public class Connection
{
public string ServiceUrl { get; set; }
public string? UserName { get; set; }
public string? Password { get; set; }
//... others
}
Але я отримую помилку:
CS8618
: Незмінна властивість "ServiceUrl" неініціалізована. Поміркуйте, визнавши властивість недійсною.
Це клас DTO, тому я не ініціалізую властивості. Це буде відповідальність за код ініціалізації класу, щоб переконатися, що властивості не є нульовими.
Наприклад, абонент може зробити:
var connection = new Connection
{
ServiceUrl=some_value,
//...
}
Моє запитання: Як поводитися з такими помилками в класах DTO, коли ввімкнено контекст зворотності C # 8?
Plain Old C# Object
. Просто об’єкт, як і будь-який інший, без успадкування від якогось спеціального класу. Я підозрюю, що у вас інше питання. Як створити DTO -Data Transfer Objects
This should be the responsibility of the one initializing the class to ensure that the properties are non-null
клас повинен бути у дійсному стані завжди. Якщо null
це не дозволено, властивість ніколи не має бути нульовим. Можливо, замість базового рядка слід використовувати спеціалізований клас для URL-адреси, який може мати значення або None
`Відсутній`, як клас Option у F #. C # 8 дозволяє писати такі класи та перевіряти їх за відповідності шаблону
public string ServiceUrl { get; set; } = default! ;
. Я сподіваюся, що в майбутньому Рослін може мати спосіб вирішити пізню ініціалізацію поза сферою ctor. Я використовував MayBe <T> (як клас Option), але я перейшов на нульовий опорний тип в c # 8 для нового коду.