Используя Newtonsoft Jschema, как я могу проверить свойства производного класса на основе абстрактного класса? - PullRequest
1 голос
/ 15 января 2020

Примером может служить массив абстрактного класса Production, который имеет производные классы Movie и Series. У меня есть массив в схеме, который является Production[], который может содержать Movie или Series. Я проверяю схему, предоставленную нам третьей стороной. Я только проверяю, но не десериализую, поэтому проверяю его с помощью потока проверки.

Когда я проверяю этот массив, он проверяется только по свойствам в пределах Production. Он пропускает любые свойства, которые находятся в производных классах. Как я могу получить его для проверки правильности свойств производного класса? У меня есть ProductionType свойство в Production, которое соответствует однозначному соответствию производному классу.

Я попытался добавить схемы производного класса в «AdditionalItems» в ProductionGenerationProvider и проверить вручную против этого в ProductionValidationProvider. Сделал это value.Validate(matchedSchemaItem). Это приводит к тому, что вместо новой проверки в контексте текущей проверки создается совершенно новая проверка.

Я также пытался использовать свойство OneOf в схеме, передавая ссылки на все производные типы. но он просто говорит мне, что он не проверял ни один из элементов в OneOf.

Есть ли другой способ сделать это? Я предполагаю, что это решенная проблема, и я просто не сталкивался с решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...