前言
一般來說,在 Controller 中透過 Repository 取回 Entity 的資料後,會再透過 Mapper 來將它轉成 DTO 傳給 Client 。例如,
1 | [ ] |
上面的範例雖然只有一行,但卻都是相同的程式碼,這時可以將它抽到 ResultFilterAttribute 之中。
實作
建立 BooksResultFilterAttribute 來繼承 ResultFilterAttribute 實作 OnResultExecutionAsync Method。
因為會使用到 AutoMapper ,所以可以從 Constructor 中取得,或是透過 HttpContext.RequestServices.GetRequiredService ,
使用後者方式比較簡潔一些。
1 | public class BooksResultFilterAttribute: ResultFilterAttribute |
所以原本寫在 Action 之中的 Mapper 程式移到了 ResultFilterAttribute 後,只需在 Action 宣告使用該 Attribute 即可。
1 | [ ] |
如果整個 Controller 都是 Return 相同的 DTO ,則可以加在 Controller 上哦!