将动态对象转换为C#对象

时间:2016-08-07 10:44:43

标签: c# dynamic

我希望从第三方API&使用最少的代码转换为我的C#对象。 类似于Dapper对SQL语句的结果与C#对象的结果。有没有可以做到这一点的图书馆? 我可以像下面那样手动完成,但是每次我想要从这个API中检索时,似乎有很多代码可以编写。

 public IEnumerable<Requirement> Get()
    {
        dynamic requirementsSelect;
        requirementsSelect = _RequirementsRepository.GetRequirements();
        IList<Requirement> Requirements = new List<Requirement>();
        foreach (var req in requirementsSelect)
        {
            Requirement requirement = new Requirement();
            requirement.Text = req.Text;
            requirement.Number = req.Number;
            Requirements.Add(requirement);
            foreach (var node in req.Phrases)
            {
                Requirement reqNode = new Requirement();
                reqNode.Text = node.Text;
                reqNode.Number = node.Number;
                requirement.Nodes.Add(reqNode);
        }
        return Requirements;
    }

谢谢

1 个答案:

答案 0 :(得分:1)

我最终将第三方作为JSON返回如下。在我的特定情况下,JSON没有显示属性。我通过将动态对象更改为IEnumerable来解决,然后我可以使用.Select指定我想要检索的属性。

IEnumerable<dynamic> requirements = _RequirementsRepository.GetRequirements();
        return JsonConvert.SerializeObject(new
        {
            Requirement = requirements.Select(x => x.Text),
            Number = requirements.Select(x => x.Number),
        });

谢谢!