DTO по своей природе должен представлять собой конкретный вариант использования. Класс представляет собой представление данных, которые будут переданы - отсюда и название. Таким образом, всякий раз, когда есть разные данные, да, у вас должен быть другой DTO.
Теперь, это не мешает вам использовать DTO через наследование. Например, ProductDetailView
может наследоваться от ProductListView
, поскольку это расширенный набор свойств ProductListView
. Однако не следует наследовать от ProductUpdateDescriptionAndBrand
, поскольку оно включает свойство Id
, которое ProductDetailView
не имеет.
В этих случаях вместо этого можно использовать композицию. Например, у вас может быть что-то вроде:
public class BrandDescription
{
public string Brand { get; set; }
public string Description { get; set; }
}
А затем:
public class ProductUpdateDescriptionAndBrand
{
public string Id { get; set; }
public BrandDescription BrandDescription { get; set; }
}
public class ProductDetailView : ProductListView
{
public BrandDescription BrandDescription { get; set; }
}
В противном случае, просто оставьте классы такими, какие они есть, и используйте их все соответствующим образом. Помните также, что каждый из них служит определенной цели (представляет определенную группу передаваемых данных). Таким образом, свойство типа Description
не обязательно означает одно и то же во всех местах. То, что свойства похожи или имеют одинаковые имена, не означает, что они обрабатывают одни и те же концепции.