У меня сложная иерархия объектов JSON, публикуемых в сервис WCF. По дизайну и другим требованиям каждый объект JSON имеет целочисленный идентификатор, концептуально представляющий его тип или макет поля (назовем его идентификатором типа).
То, что я хотел бы выполнить, - это контроль над тем, какой тип .NET выбран для десериализации каждого объекта JSON, путем проверки каждого входящего целочисленного идентификатора типа.
Пример ввода:
{
"typeId": 4,
"someField1": "foo",
"someField2": "bar",
"otherObject":
{
"typeId": 7
"someField3": "abc",
"someField4": "xyz"
}
}
Пример (идеал) Процесс:
1. I receive partially parsed object.
2. I inspect "typeId" which has value 4.
3. I notify the deserialization process that I elect to use my .NET type FooBarA.
4. I receive partially parsed object.
5. I inspect "typeId" which has value 7.
6. I notify the deserialization process that I elect to use my .NET type FooBarB.
Это или подобное можно сделать? Кажется, я вспоминаю службы asmx-стиля, которые раньше включали поле __type, аналогичное моему типу id, я полагаю, но я не помню его точное назначение или возможность его включения в WCF в качестве альтернативы.