我有一個ApiController,返回OkNegotiatedContentResult<T>
與資源收集,分頁。當然,會有更多方法返回分頁集合。如何提供額外的方法來返回IHttpActionResult?
的所有這些行動的結果content
看起來大致是這樣的:
- 一個
Data
屬性與當前項目 - 一個
PagingMeta
財產分頁元數據,如總頁數,總項目 - A
PagingLinks
屬性包含第一頁/上一頁/下一頁/最後一頁的鏈接
我的後端r會產生一個自定義的PagedList<T>
對象,而我有另一個PagedListResponse<T>
包含上述屬性。這是一個從一個到另一個的簡單轉換。
現在,在網絡API中,ApiController
提供了一些方便的方法返回IHttpActionResult
,如:
Ok<T>(T value)
Content<T>(HttpStatusCode statusCode, T value)
我希望使它就像便於控制器輕鬆返回分頁結果。
目前我有一個擴展方法,提供它具有以下特徵:
public static OkNegotiatedContentResult<PagedListResult<T>> OkPaged<T>(this ApiController controller, /* other parameters */)
「醜陋」是,你只能通過包括this
關鍵字調用擴展方法:
return this.OkPaged(myResult);
我能看到的唯一的其他選擇是實現一個基類控制器類,但我通常會盡量避免這種繼承結構,因爲它們往往會在後來變得麻煩。
ASP.NET在擴展點方面做了什麼來做我想做的事情?