時常回到原點思考,可以幫助我們確認做這件事情的價值,物件導向設計原則及模式在網路上有很多文章在介紹它,一篇比一篇寫得還詳細,但是搜尋「為什麼要遵循物件導向設計原則及模式」,文章的數量就不多了,原因我想大概就是有些事情必須要切身體會,才會有所體悟。
[廚餘回收] 扒網頁扒到「伺服器認可通訊協定違規. Section=...」追追追
之前扒網頁扒到「伺服器認可通訊協定違規. Section=...」的問題,決定追根究柢一下,這個訊息不是只有在用 RestSharp 接收 Response 時會這樣,用 Fiddler 做側錄的時候也會跳出警告訊息來。
[小菜一碟] 偽造 ClaimsIdentity 為 Controller Action 做有身份識別的單元測試
我在之前的專案有使用過 ASP.NET Identity 來幫我做驗證的工作,ASP.NET Identity 的出現為驗證身份的方式帶來了更大的彈性,不過如何使用不是這道菜的重點,這道料理要展現的是,當我們為 Controller Action 做有身份識別的單元測試時,我們要如何偽造不同的身份來滿足測試情境?
[料理佳餚] FluentValidation + Autofac.Extras.DynamicProxy2 實現參數條件檢查的 AOP 攔截器
之前在[料理佳餚] 使用 Decorator Pattern 分離參數檢查與資料處理這篇文章有提到我想要用 AOP 的方式來把參數的條件檢查分離出來,當時還沒有什麼好的做法,但是在遇到 FluentValidation 之後有了新的想法,只要搭配 Autofac 及 Autofac.Extras.DynamicProxy2 就可以實現參數條件檢查的 AOP 攔截器。
[料理佳餚] 讓 FluentValidation 把參數的檢查條件口語化
先前在[料理佳餚] 使用 Decorator Pattern 分離參數檢查與資料處理這篇文章裡分享過如何分離參數的條件檢查及資料處理的邏輯,讓程式碼的職責可以更聚焦,不過那篇文章裡面參數檢查條件的範例部分是單純用 if...else... 兜出來的,看起來有點「阿雜」。
有一個 Package 叫 FluentValidation,它可以將單純用 if...else... 兜出來的參數檢查條件,用口語化的方式來表達,讓程式碼可以更貼進人的閱讀習慣。
[料理佳餚] C# 切換 Windows Form 的執行身分
曾經的一個需求,需要在 Client 端對位於檔案伺服器上的檔案進行操作時,切換到另一個具有權限的 Domain 身分,只用過這一次,分享給大家參考。