我可以 return C# 中的匿名对象吗

Can I return an anonymous object in C#

我的代码return是一个对象:

  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; }
}

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

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

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

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