Как сохранить тип объекта в json-строке при отправке данных в веб-службу asmx в .net 2.0?
например:
class A{
string name;
}
class B : A {
string address;
}
и веб-метод:
[WebMethod]
public void PushJson(A obj){
B b = (B) obj;
}
Теперь, в приведенном выше примере сценария, скажем, я отправляю {"obj":{"name":"waqas","address":"sweden"}}
, то как я могу заставить мою строку json действовать как тип класса B, чтобы он мог быть принят веб-методом как объект класса A и далее анализируется обратно в объект класса B? Короче говоря, как сохранить полиморфизм в json?
Я заметил, что компилятор бросает мне System.InvalidCastException
, когда я пытаюсь выполнить такой шаблон
P.S. Я заметил, что .net добавляет __ тип для сложных объектов при сериализации в json. Возможно ли, что мы можем включить этот ключ, чтобы помочь .net автоматически анализировать строку json с правильным типом класса?
любая помощь/предложение будут полезны.
Обновление:
Если мы внимательно наблюдаем wsdl
веб-службы asmx, объекты, чьи классы наследуют родительские классы, содержат что-то вроде <s:extension base="tns:ParentClassName">
. Я думаю, что эта часть расширения - это то, что мне может понадобиться преобразовать в Json. Любая идея относительно этого?