Я передаю классы, которые происходят от общего класса. Я обнаружил, что, несмотря на передачу действительных данных десериализации, концентратор не учитывает TypeNameHandling и полностью игнорирует $type JSON. Он десериализуется в базовый класс независимо от того, что я пытаюсь сделать.
Я пошел и взял JSON, который я отправлял в концентратор, вставил его в код концентратора в виде строки, затем использовал JsonConvert.Deserialize, чтобы увидеть, что произойдет, и он правильно десериализовался в мой производный объект.
В моем стартапе у меня есть
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto
};
Я не был уверен, что это действительно используется, поэтому я создал тестовый конвертер JSON и поместил отладку в свойство CanRead (которое я вернуло статическое значение false). Это попало. Это также позволило моей десериализации строк работать.
Так что же делает концентратор по-другому, что все работает, кроме концентратора?