我運行一個Windows窗體應用程序需要更新的GUI,因此有使用的是來自當前同步上下文調度。代碼:TaskScheduler.FromCurrentSynchronizationContext()改變從TaskScheduler.FromCurrentSynchronizationContext()調度單元測試
在編寫單元測試時 - 這個調度程序需要切換,因爲我們想要使用我們自己的調度程序,在測試中同時運行並同步運行。有替代品(注射,ManualResetEvent),但這是醜陋的,我們不希望它。
可以通過使用反射來覆蓋私有變量來修改TaskScheduler.Default,這很好,但是對於TaskScheduler.FromCurrentSynchronizationContext()沒有明顯的做法。
那麼,你如何做到這一點?
依賴注入如何醜陋?至少對我來說這聽起來很荒謬。對我來說,這聽起來是你想要實現的(反射來覆蓋一個私有變量)是什麼醜陋的。更好的方法是注入一個返回調度程序的工廠,或者注入調度程序本身。 – 2014-11-24 08:37:04
你說DI很奇怪,但你寧願用反射來提取一個類中的私有變量?我認爲你有它混合:) – 2014-11-24 09:02:44
是的好吧,我提到的醜陋的事情是ManualResetEvent。注入確實看起來不錯,但實際的問題仍然存在:如何在TaskScheduler.FromCurrentSynchronizationContext()中更改Scheduler? – imbageek 2014-11-24 10:05:11