Мы написали веб-сервис, который использует простой транслятор сущностей для сопоставления значений DTO с «реальными» серверными бизнес-объектами. Как часть этого упражнения. Мы столкнулись с «интересным» различием между явно установленными нулевыми значениями и клиентами, у которых не установлено значение.
Проблема, по сути, заключается в том, что мы хотим установить значение по умолчанию для реального бизнес-объекта , если клиент явно не установил значение , однако, используя стандартные обнуляемые типы, невозможно определить, является ли клиент явно означает " установить это значение на ноль " или просто не установить его.
Решение здесь, очевидно, является своего рода «флагом».
Внутри бизнес-объекта мы можем отслеживать состояние поля внутри, используя закрытые флаги «IsDirty», установленные в установщиках свойств, но DTO действительно только определяет интерфейс, так что это означает предоставление этих данных для общего доступа. Это оставляет ряд вариантов реализации. Язык C # (такой статически типизированный), так что ...
- Мы могли бы выставить флаг "IsSet" для каждого свойства?
- Мы могли бы выставить каждое свойство как класс, который имеет свойства .Value и .IsSet?
и т. д.
Как бы вы решили выставить эти "флаги" в Договоре о данных?
Что бы вы здесь сочли лучшей практикой для этого?
Любые мнения по этому поводу будут с благодарностью.