Dans ma dernière question SO, j'ai demandé comment modifier les paramètres du sérialiseur pour Json.NET, que ASP.NET Web API utilise nativement pour la (dé)sérialisation. La réponse acceptée a parfaitement fonctionné, et j'ai ainsi pu incorporer des informations de type dans la chaîne JSON sérialisée.
Cependant, lorsque j'essaie de renvoyer cette chaîne JSON à une action Web API qui attend la classe parent du modèle, Web API désérialise toujours vers la classe parent, supprime toutes les données correspondant à la classe enfant et empêche le cast et la détection de la classe enfant.
class Entity { }
class Person : Entity { }
public Person Get() {
return new Person();
}
public bool Post(Entity entity) {
return entity is Person;
}
Un cas d'utilisation simple consisterait à faire quelque chose comme ceci en jQuery :
// obtenir un objet Person JSON sérialisé
$.ajax({
url : 'api/person' // PersonController
}).success(function (m) {
// puis renvoyer directement cet objet Person via une requête HTTP POST
$.ajax({
url : 'api/person',
type : 'POST',
data : m
}).success(function (m) {
console.log(m); // false
});
})
Je m'attendais à ce qu'en modifiant les JsonSerializerSettings
de Json.NET pour incorporer des informations de type, il serait capable de les lire et, au moins, d'essayer de forcer la désérialisation vers ce type, mais apparemment il ne le fait pas.
Comment devrais-je aborder un problème comme celui-ci?