Я пытался выяснить
лучший способ вернуть ошибки валидации
к интерфейсу, и я наткнулся на
Интерфейс IDataErrorInfo. Fantastic!
Абсолютно. Почему вы не знаете, что вы делаете в первую очередь? IDataErrorInfo полностью документирована - это не то, с чем вам следует «столкнуться» (что звучит случайно).
Реализация этого интерфейса
превратит мой DTO в POCO и
сделать его более крупным объектом с точки зрения
использование памяти. На данный момент все
пользовательские элементы управления связаны с
текущие объекты DTO.
У DTO нет абсолютно никакой информации о внутренних ошибках - никогда не должно быть внутренних ошибок. Смотрите, DTO - это «Объект передачи данных», а не «Бизнес-объект». DTO - это то, что бизнес-объект должен сгенерировать для отправки его в DataAccessLayer, и причина, по которой не должно быть проверки, заключается в том, что бизнес-объект гарантирует, что ТОЛЬКО ВАЛИДНЫЕ ОБЪЕКТЫ СОЗДАЮТ DTO.
Btw.,
превратит мой DTO в POCO
У меня для вас есть еще одно неожиданное открытие - ваш DTO уже является POCO. POCO - это «Обычный старый объект CLR», и я полагаю, что ваши DTO установлены как классы .NET, так что - угадайте, что, удивительно, они уже являются POCO.
Что вы имеете в виду (опять что-то, чтобы открыть), так это то, что оно превратит ваши DTO в BO.
Или есть лучший способ получить
валидация сообщений обратно в интерфейс?
Нет, нет. Наилучший способ отправки сообщений до пользовательского интерфейса - через интерфейсы, определенные пользовательским интерфейсом, и IDataErrorInfo таков.
Ваша проблема в том, что у вас возникла путаница в отношении:
- Как программировать многоуровневую архитектуру и создавать стандартный уровень доступа к данным
- Ничего не знаю об используемых вами терминах (посмотрите, в чем состоит ваша проблема, зная, что такое DTO и что такое POCO).
- Таким образом перепутайте свои обязанности.
См. Ответы по POCO против DTO , чтобы объяснить, что вы на самом деле перепутали.
Назад к чертежной доске. Как ваш ведущий разработчик / архитектор, вы познакомитесь с многоуровневой архитектурой и прочитаете документацию .NET.
DTO не должен заниматься проблемами DataTransfer.