До сих пор мне удавалось вносить изменения, но каждый раз, когда я сталкиваюсь с DTO, я не могу понять, как поместить его в чистую архитектуру.
Под DTO я имею в виду: Объект, содержащий несколько объединенных свойств объектов домена. Я использую DTO, потому что база данных все еще находится в «устаревшем формате», но API должен предоставлять разные форматы ответов в нескольких системах.
Предположим, у меня есть следующая структура:
Домен:
Код: Выделить всё
public class EntityA
{
public string Prop1{get; set;}
}
public class EntityB
{
public string Prop2{get; set;}
}
Код: Выделить всё
public interface IService
{
}
Код: Выделить всё
public class DTO
{
public string Prop1{get; set;}
public string Prop2{get; set;}
}
public class Service : IService
{
public IEnumerable RetrieveDto()
{
return new DTO()//Construct DTO....
}
}
Мне нужно изменить интерфейс службы домена, чтобы вернуть DTO. Это создает циклическую ссылку, и я не думаю, что это нормально.
Я пытался создать абстрактный класс DTO в домене и наследовать его, чтобы избежать ссылки из домена в приложение. Но я не совсем уверен, что это должно быть решением, потому что DTO - это просто объекты, хранящие данные, у меня нет ничего в этом абстрактном классе.
В настоящее время преобразователь и DTO размещаются в приложении, потому что из приложения я получаю доступ к инфраструктуре для репозиториев, и здесь я сопоставляю объект с DTO.
Итак, мой вопрос: я понимаю здесь что-то не так? Где правильно должны быть размещены DTO?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/725 ... -dto-place
Мобильная версия