我正在开发一个使用 Newtonsoft.Json 库的 web api 项目。我有一个“信息”模型,它有两个属性,我将从请求正文中读取这个对象(使用 [FromBody])
public class Info {
InfoType type { get;set;}
// info object based on info type
}
InfoType 是一个枚举,它有 3 个值,基于这三个值,我想创建不同类型的对象。例如,如果类型为“Storage”,则对象将属于 Storage 类。 Info 对象也出现在请求正文中。所以基本上我想根据信息类型反序列化。 任何人都可以提出一种方法来实现这一目标。
一般你不能在编译时确定对象类型,这意味着你必须转换它!
public class Info{
public InfoType type {get; set;}
public object MyData {get;set;}
}
//...somewhere else
switch type {
case StorageType:
var data = MyData as Storage;
//...etc
}
您也可以使用继承并让 NewtonSoft 为您完成这项工作,但您仍然必须在类型上放置一些 switch/if 语句,所以它只会让您的问题变得过于复杂