Лучшей вашей ставкой была бы структура, позволяющая указать валидацию модели в не зависящем от языка формате, таком как JSON.Вы можете получить схему проверки типа, скажем:
{
"name": [
{
"validate": "length",
"minLength": 6,
"maxLength": 10
},
...
],
...
}
В этом случае у вас будут специальные средства проверки языка, которые могут анализировать этот формат.Валидаторы должны быть написаны только один раз, а затем вы поддерживаете единую схему для каждой модели.
Однако, это, вероятно, звучит очень похоже на CORBA / SOAP / Thrift / ProtocolBuffers / и т.д.с этой точки зрения.Это потому, что они были написаны для решения этих типов проблем, и вы в конечном итоге изобрели несколько колес, если напишите сами.