Редактировать: Найден ответ (в комментариях).Отправка POST в JSON на ApiController
В настоящее время я использую System.Web.Http.ApiController
для доступа к некоторому объекту в памяти сервера. Эти объекты могут иметь любой тип.
Я использую следующий контроллер апи, чтобы получить их: (. Пример кода не полный исходный код)
public class DataController : ApiController
{
Dictionary<String, Object> _dataDict;
public object Get(string dataPath)
{
Object result = _dataDict[dataPath];
return result;
}
}
Это прекрасно работает, чтобы получить все мои объекты в формате JSON через веб-API. Проблема заключается в отправке новых объектов с использованием POST:
public class DataController : ApiController
{
Dictionary<String, Object> _dataDict;
public object Get(string dataPath)
{
Object result = _dataDict[dataPath];
return result;
}
public void Post(string dataPath, Object obj)
{
_dataDict[dataPath] = obj;
}
}
Объект будет динамическим объектом вместо реального десериализованного объекта. Внедрение конкретного метода, такого как:
public object Post(string dataPath, MyClass instance)
{
_dataDict[dataPath] = instance;
}
отлично работает. К сожалению, я не знаю всех используемых типов во время выполнения, но я знаю, какой тип это, анализируя dataPath и могу получить экземпляр Type во время выполнения. Как я могу сказать, форматировщик или ApiController (я не знаю, кто на самом деле создает экземпляр), чтобы создать для исправления экземпляра, используя правильный тип?
Я использую System.Net.Http.Formatting.JsonMediaTypeFormatter
.
Заранее спасибо.
devluz
Я не могу ответить на мой собственный вопрос, но нашел решение: Это на самом деле JObject, а не динамический объект. Смущающий ответ: public void Post (string dataPath, JObject obj) { Тип myClass = figureOutMyTypeByParsingThePath (dataPath); _dataDict [dataPath] = obj.ToObject (myClass); } И мне нужно было несколько часов, чтобы понять это ... – luz
Извините за то, что тратил свое время :) и спасибо – luz