This is a tough one. I have an issue with binding a model from JSON. I am attempting to resolve polymorphic-ally the record supplied with the type of record that it will resolve to (I want to be able to add many record types in the future). I have attempted to use the following example to resolve my model when calling the endpoint however this example only works for MVC and not Web API applications.
I have attempted to write it using IModelBinder and BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext). However I can't find the equivalent of ModelMetadataProviders in the System.Web.Http namespace.
Appreciate any help anyone can give.
I have a Web API 2 application which has the following object structure.
public abstract class ResourceRecord { public abstract string Type { get; } } public class ARecord : ResourceRecord { public override string Type { get { return "A"; } } public string AVal { get; set; } } public class BRecord : ResourceRecord { public override string Type { get { return "B"; } } public string BVal { get; set; } } public class RecordCollection { public string Id { get; set; } public string Name { get; set; } public List Records { get; } public RecordCollection() { Records = new List(); } }
JSON Structure
{ "Id": "1", "Name": "myName", "Records": [ { "Type": "A", "AValue": "AVal" }, { "Type": "B", "BValue": "BVal" } ] }