просто наличие классного типа гарантирует тебе ровно ничего, особенно если есть интероп (а он будет рано или поздно!). твой пример с валидацией строк очень хорошо демонстрирует всю беспомощность "доменной модели" самой по себе без обвязки в виде валидаторов в нужном месте.