У меня есть абстрактный класс с JsonConverter атрибут как так:Использование JsonConverter по запросу GET в Web Api
[JsonConverter(typeof(SurveyItemConverter))]
public abstract class SurveyItem:ISurveyItem
{
private class SurveyItemConverter : JsonCreationConverter<ISurveyItem>
{
protected override ISurveyItem Create(Type objectType, Newtonsoft.Json.Linq.JObject jObject)
{
var type = (SurveyItemType)jObject.Value<int>("Type");
switch (type)
{
case SurveyItemType.Label:
return new SurveyLabel();
case SurveyItemType.Textbox:
return new SurveyTextbox();
case SurveyItemType.TextArea:
return new SurveyTextArea();
case SurveyItemType.CheckBoxGroup:
return new SurveyCheckboxGroup();
case SurveyItemType.Checkbox:
return new SurveyCheckbox();
case SurveyItemType.RadioGroup:
return new SurveyRadioGroup();
case SurveyItemType.RadioButton:
return new SurveyRadioButton();
case SurveyItemType.Email:
return new SurveyEmail();
case SurveyItemType.Telephone:
return new SurveyTelephone();
case SurveyItemType.Number:
return new SurveyNumber();
case SurveyItemType.DateTime:
return new SurveyDate();
case SurveyItemType.Password:
return new SurveyPassword();
case SurveyItemType.Url:
return new SurveyUrl();
case SurveyItemType.ProfileName:
return new SurveyProfileName();
default:
throw new ArgumentOutOfRangeException();
}
}
}
public string Label { get; set; }
public int Id { get; set; }
public SurveyItemType Type { get; set; }
}
Это прекрасно работает, если запрос является POST/PUT, но с запросом GET он не:
Cannot create an abstract class
контроллер, который обрабатывает запрос GET имеет метод с сигнатурой (этот метод для браузеров, которые не поддерживают CORS):
[HttpGet]
public async Task<IHttpActionResult> SubmitSurvey(HttpRequestMessage request, [FromUri] Survey survey)//survey contains a List<SurveyItem>
Почему он не использует JsonConverter? Как я могу заставить JsonConverter работать с этим методом?