2014-01-14 40 views
1

目前我正在開發一個項目,它有一個管理端和客戶端。返回多種數據類型的方法

管理員端使用DirectResult執行任何與管理相關的操作,因爲客戶端使用JsonResult來呈現頁面,並且我想使用相同的Controllers。根據請求返回DirectResultJsonResult的方法。

例如:

  • AdminClass1.Method() - >應該返回DirectResult
  • ClientClass1.Method() - >應該返回JsonResult

和兩個結果使用Ajax請求要求。

+0

曾聽說過仿製藥嗎? http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx – RononDex

+0

做的DirectResult或JsonResult有什麼共同的編程方式?我覺得Method()應​​該放在代表Admin或Client的類上,但如果不知道你的設計,這很難說。 – Liath

+0

他們有一個共同的接口或基類? – RononDex

回答

0

由於C#的限制,不可能這樣做。 C#類中的每個方法都必須具有唯一的方法簽名,但返回類型不計入簽名中。

考慮使用不同的名稱創建Ajax方法(因爲這是您的客戶端通常不可見的方法)。

約束(仿製藥)是not part of the method signature,所以,除非你是傳遞不同的參數,以你的方法,這將有相同的結果,只是它們命名相同的瓦特/不同的返回類型。

編輯:我誤解了。如果DirectResult和JsonResult都從相同的基類繼承,那麼只需將其中的任一個返回到基類型中即可。

0

在這個問題上回答了這個問題:StackOverFlow question。 另一種不返回通用對象的方法是爲兩種返回類型實現相同的祖先並將其設置爲返回類型。 或者返回Tuple帶空值。