Примером может служить массив абстрактного класса Production
, который имеет производные классы Movie
и Series
. У меня есть массив в схеме, который является Production[]
, который может содержать Movie
или Series
. Я проверяю схему, предоставленную нам третьей стороной. Я только проверяю, но не десериализую, поэтому проверяю его с помощью потока проверки.
Когда я проверяю этот массив, он проверяется только по свойствам в пределах Production
. Он пропускает любые свойства, которые находятся в производных классах. Как я могу получить его для проверки правильности свойств производного класса? У меня есть ProductionType
свойство в Production
, которое соответствует однозначному соответствию производному классу.
Я попытался добавить схемы производного класса в «AdditionalItems» в ProductionGenerationProvider
и проверить вручную против этого в ProductionValidationProvider
. Сделал это value.Validate(matchedSchemaItem)
. Это приводит к тому, что вместо новой проверки в контексте текущей проверки создается совершенно новая проверка.
Я также пытался использовать свойство OneOf
в схеме, передавая ссылки на все производные типы. но он просто говорит мне, что он не проверял ни один из элементов в OneOf.
Есть ли другой способ сделать это? Я предполагаю, что это решенная проблема, и я просто не сталкивался с решением.