根据类型属性创建C#对象

问题描述 投票:0回答:1

我正在开发一个使用 Newtonsoft.Json 库的 web api 项目。我有一个“信息”模型,它有两个属性,我将从请求正文中读取这个对象(使用 [FromBody])

public class Info {
  
    InfoType type { get;set;}
    
    // info object based on info type
}

InfoType 是一个枚举,它有 3 个值,基于这三个值,我想创建不同类型的对象。例如,如果类型为“Storage”,则对象将属于 Storage 类。 Info 对象也出现在请求正文中。所以基本上我想根据信息类型反序列化。 任何人都可以提出一种方法来实现这一目标。

asp.net asp.net-web-api model json.net
1个回答
0
投票

一般你不能在编译时确定对象类型,这意味着你必须转换它!

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 语句,所以它只会让您的问题变得过于复杂

© www.soinside.com 2019 - 2024. All rights reserved.