Меньшая версия доменных объектов для отправки клиенту (недостаточно памяти)
У меня есть доменные объекты с множеством свойств (членов), которые я использую в своем API. В некоторых транзакциях имеет смысл отправлять клиенту объекты домена, а не целый новый класс ответа с теми же членами.
Теперь мой вопрос: есть ли способ, которым я скрываю некоторые свойства класса и отправляю только некоторые свойства (члены) клиенту (и в другом вызове отправляю другой набор свойств и скрываю остальные)?
2 ответа
Вы можете создавать новые классы ответа DTO(объекты передачи данных), содержащие только те свойства, которые вы хотите отправить обратно. Затем создайте фабричные методы для преобразования ваших объектов доменных классов в ответный DTO.
Это послужит вашей цели. Позже, если вы хотите добавить в свой DTO новые свойства, которые фактически существуют в других классах домена, вы можете легко добавить их.
Просто чтобы добавить на случай, если вы собираетесь использовать его. Вы также можете запросить DTO. Данные клиента могут не обязательно соответствовать вашим классам домена. Опять же, вы можете создать фабричный метод, который преобразует ваш запрос DTO в объект (ы) класса / классов домена.
Как уже было сказано, DTO больше подходит для этого. В качестве альтернативы вы можете "спрятать" нежелательные свойства от клиента за более конкретным общедоступным интерфейсом. Ваши доменные объекты могут просто реализовать их.
Пример:
class Document : IEntity, IVersionable, IDocumentContentDescription
{
public string Name { get; set; }
public string Description { get; set; }
public string MimeType { get; set; }
public long Length { get; set; }
public int Version { get; set; }
}
public interface IDocumentContentDescription
{
string MimeType { get; }
long Length { get; }
}