我可以在C#中返回一个匿名对象吗?

时间:2015-02-09 17:53:27

标签: c# asp.net-web-api

我的代码返回一个对象:

  public async Task<IHttpActionResult> GetAnswers(int userTestQuestionId)
    {

  return Ok(new AnswerToClientDTO
        {
            AnswerGridCorrect = answerGridCorrect,
            Result = result,
            UpdateRowCount = updateRowCount
        });

以下是AnswerToClientDTO的代码,该代码仅在我的应用程序中的一个位置使用:

public class AnswerToClientDTO
{
    public string AnswerGridCorrect { get; set; }
    public int UpdateRowCount { get; set; }
    public string Result { get; set; }
}

我是否可以返回一个匿名对象,我不必从ASP.NET WEb API方法声明一个类?

2 个答案:

答案 0 :(得分:9)

在WebAPI中,您可以将任何对象传递给Ok(),该对象可以由配置的格式化程序格式化,因此这应该是有效的:

public IHttpActionResult GetStuff()
{
    return Ok( new {
        AnswerGridCorrect = answerGridCorrect,
        Result = result,
        UpdateRowCount = updateRowCount
    } );
}

答案 1 :(得分:1)

从技术上讲,是的,您可以使用objectdynamic。据说这不是一个好主意。此外,如果您正在使用此类WebAPI(例如通过WCF的REST或SOAP服务),这将是一个坏主意,因为从HTTP调用/响应的序列化不会知道正确的格式用于以JSON或XML格式发送数据。