返回匿名对象的方法

时间:2014-01-30 07:16:52

标签: c# .net asp.net-mvc-5

我有类似的代码部分:

var @object =
    new
    {
        val = "SUCCESS",

        stuff = new
        {
            stuff1 = model.Stuff1,
            stuff2 = model.Stuff2
        }
    };
return Json(@object, JsonRequestBehavior.AllowGet);


var @object =
    new
    {
        val = "SUCCESS"
    };
return Json(@object, JsonRequestBehavior.AllowGet);

var @object =
    new
    {
        val = "ERROR",
        details = "Details"
    };  
return Json(@object, JsonRequestBehavior.AllowGet);

对我而言,它看起来像是一种应该修复的重复代码。

我想重构那段代码,所以我可以有类似的东西:

var @object = GetResult("SUCCESS", object myobj)
return Json(@object, JsonRequestBehavior.AllowGet);

这样做的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

看起来您有兴趣为匿名类型生成属性,并在运行时为这些属性赋值。

有一篇帖子here向您展示了如何动态创建课程,但似乎您必须努力工作才能到达目的地。

为什么不从不同类型的对象生成JSON字符串并将其合并为一个JSON字符串?

       string val = "SUCCESS";


        var stuff = new
        {
            stuff1 = "some string",
            stuff2 = "4324"
        };


        string json = new JavaScriptSerializer().Serialize(
            new {val, stuff}
            );

{"val":"SUCCESS","stuff":{"stuff1":"some string","stuff2":"4324"}}