Как правило, в этих ситуациях я сохраняю свои объекты сериализации в виде POCO (просто получает / устанавливает), а затем, как только я их десериализовываю, я буду делать любые дополнительные проверки, которые мне нужно будет выполнить, и обработать / обработать ошибку в зависимости от ситуации.
Таким образом, это означает, что у меня есть мой «интерфейс» для сериализации, который является просто POCO, и затем, как только я его десериализовал, я делаю любые проверки согласованности и загружаю / адаптирую к своим сущностям. Там, где я работаю, мы делаем это с нашими веб-сервисами, где у нас есть наши доменные сущности и наши интерфейсные классы. Как только мы получим запрос, мы адаптируем его к нашим бизнес-объектам, а затем передадим на бизнес-уровень и изменим процесс для получения результатов.
Я вижу, что сериализация пересекает слой, и, следовательно, все входные данные должны быть проверены, а затем адаптированы для поддержания связи на минимуме.
Но это только мои $ 0,02