如何将类型化的类复制到动态对象中

时间:2015-05-21 19:54:02

标签: c# dynamic servicestack

我想获取一个类型化的类,将其复制到动态对象,添加任意值,然后使用ServiceStack JSON转换器将其序列化为json对象。像这样:

dynamic toAddTo = new ExpandoObject();
toAddTo.CloneFrom(model);
toAddTo.arbitratyValue = "Fancy Things";
return jsonApiType.ToJson();

有没有人做过一些能够以高效的方式发挥作用的东西?

1 个答案:

答案 0 :(得分:1)

不,您必须单独向ExpandoObject添加属性。如果源对象是静态的并且属性数量不是太大,则可以创建匿名类型:

var jsonApiType = new {
    model.Name,
    model.Age, 
    ...
    arbitratyValue = "Fancy Things"
};

return jsonApiType.ToJson();

或者你可以包装你的模型:

var jsonApiType = new {
    model,
    arbitratyValue = "Fancy Things"
};

return jsonApiType.ToJson();

但是这会改变生成的JOSN,我怀疑你正在寻找一种“聪明”的方式来为你的模型中不存在的json添加属性。