2015-02-09 25 views
3

我的代碼返回一個對象:我可以在C#中返回一個匿名對象

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方法中聲明一個類。

+3

是的,如果你改變你的返回類型爲對象或動態。 – 2015-02-09 17:54:04

+1

你可以簡單地嘗試一下) – oxfn 2015-02-09 17:54:58

+1

你可以返回'動態',但我不會推薦它...類型安全是一件好事。如果你介紹了一個突破性的改變,如果你的代碼不能編譯,那不是很好嗎? – 2015-02-09 17:55:36

回答

7

在的WebAPI你可以傳遞任何對象Ok(),可通過配置的格式進行格式化,所以這應該是有效的:

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

我們應該如何讀取/獲取這個值的另一種方法的C#? – ManirajSS 2016-01-11 09:51:16

+1

@ManirajSS你不應該這樣做,因爲公共行爲只用於外部使用(例如通過HTTP管道)如果你必須在幾個API行爲之間切割一些數據,你應該創建私有方法,它返回一些DTO中的公共數據或ViewModel – oxfn 2016-03-16 10:37:42

1

從技術上說,是的,你可以只要你使用objectdynamic。這是說這不是一個好主意。另外,如果您將此用於您提及的WebAPI(例如通過WCF提供的REST或SOAP服務),這將是一個壞主意,因爲從HTTP調用/到響應的序列化不會知道要使用的正確格式將數據作爲JSON或XML發回。

+0

先生/女士Downvoter謹慎解釋我的答案中的問題? – JNYRanger 2015-02-09 18:03:34

相關問題