Я не уверен, что вы предоставляете достаточно информации о полном заявлении, чтобы получить лучший ответ.Однако вот несколько возможных подходов:
Определите метод isValid () в вашем базовом классе, который по умолчанию возвращает true.В ваших подклассах вы можете кодировать определенную логику для каждого сегмента или FieldType, чтобы возвращать false, если какие-либо требования отсутствуют.Если вы хотите сообщить об ошибке, чтобы указать, какие поля отсутствуют, вы можете добавить аргумент List в метод isValid, чтобы каждый тип мог сообщать о списке пропущенных значений.
ИспользоватьАннотации (как AlexR сказал выше).
Преимущество двух вышеуказанных подходов состоит в том, что метаданные находятся внутри кода, привязанного непосредственно к объектам, которые его требуют.Недостатком является то, что если вы хотите изменить обязательные поля, вам необходимо обновить код и развернуть новую сборку.
Если вам нужно что-то, что можно изменить на лету, то предложение Гангуса о Xml:хорошее начало, потому что ваше приложение может перезагрузить определение Xml во время выполнения и выдать разные результаты проверки.