Несколько вопросов о DTO
Прочёл несколько статей о DTO. В целом, концепция ясна, уже начал её использовать, но осталось несколько непонятных моментов.
- Допустимо ли устанавливать значения по умолчанию для полей в классах DTO? Например для условного UserDTO:
public class UserDTO
{
public string FirstName { get; set; } = "John";
public string LastName { get; set; } = "Galt";
public bool IsMarried { get; set; } = false;
public int NumberOfChildren { get; set; } = 0;
public string Citizenship { get; set; } = "U.S.";
...
}
Обычно пишут, что в DTO не должно быть логики, только свойства. Но ведь свойства и нужны для придания дополнительной логики обычным переменным! То есть в геттеры и сеттеры всё же можно добавлять логику?
Что насчёт конструкторов? Их наличие допустимо?
Одно из применений для DTO я вижу в упрощении создания объектов. То есть вместо длинных конструкторов с десятком параметров
public User(string firstName = "John", string lastName = "Galt", bool isMarried = false, int numberOfChildren = 0, string Citizenship = "U.S."...
принимать и обрабатывать DTO
public User(UserDTO user)
Правильное ли это использование?
Источник: Stack Overflow на русском