编辑:找到答案(在评论中)。
目前,我正在使用System.Web.Http.ApiController
访问服务器内存中的某些对象。这些对象可以有任何类型。
我使用以下 api 控制器来接收它们:(示例代码。不是完整的源代码)
public class DataController : ApiController
{
Dictionary<String, Object> _dataDict;
public object Get(string dataPath)
{
Object result = _dataDict[dataPath];
return result;
}
}
这可以很好地通过 web api 以 JSON 格式接收我的所有对象。问题是使用 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;
}
}
Object 将是一个动态对象,而不是真正的反序列化对象。实现一个具体的方法,例如:
public object Post(string dataPath, MyClass instance)
{
_dataDict[dataPath] = instance;
}
工作正常。可悲的是,我不知道运行时所有使用的类型,但我通过分析 dataPath 知道它是哪种类型,并且可以在运行时获取 Type 实例。如何告诉格式化程序或 ApiController(我不知道谁实际创建了实例)使用正确的类型创建正确的实例?
我正在使用System.Net.Http.Formatting.JsonMediaTypeFormatter
.
提前致谢。
德卢兹