2015-05-08 19 views
0

在MvvMCross中創建默認View查找表時,有一個「刪除任何人的ViewModel PropertyType是接口」的步驟。 (http://slodge.blogspot.de/2013/01/overriding-view-lookup-convention-used.html)爲什麼執行此步驟?創建MvvMCross View查找表時,爲什麼「刪除任何ViewModel PropertyType是一個接口」

很明顯,你不能實例化一個接口,但是如果我編寫Mvx.Register<IMyViewModel, MyViewModel>(),我可以導航到實現ViewModel的接口ShowViewModel<IMyViewModel>()。 View創建者不是使用DI表嗎?

回答

1

當我們在2013年查看Mvx這個區域時,我們並沒有發現任何想要在接口後面隱藏每個ViewModel的用戶,而且我們確實沒有遇到想要使用接口導航的用戶。

相反,用戶普遍希望:

  • 直接導航到真正ViewModel類型
  • 偶爾使用的接口進行分組視圖模型的一起 - 例如爲IRefreshableViewModel分組。

在接口用於分組的情況下 - 例如,對於IRefreshableViewModel,那麼看到基類View也很常見 - 並且看到它具有IRefreshableViewModel ViewModel屬性。這些意見應該在你提到的步驟中被刪除。因此,我們沒有將接口用於默認的ViewModel導航......所以ViewModel不在DI/IoC/ServiceLocator查找系統中。然而,我們確實留下了Mvx的調整​​ - 這是在聲明中 - 所以如果你的應用程序想要通過接口導航,並且如果你希望你的視圖引用ViewModel接口而不是具體的類,那麼你絕對可以做到這一點 - 你只需要覆蓋設置步驟,把你的View-ViewModel查找和你的ViewModel工廠就位(這實際上是在維基上的詳細信息)

+0

謝謝斯圖爾特。我剛纔問過它,因爲我必須在mvvm研討會中解釋這些步驟。在這個2013年的日子裏,我學會了熱愛mvvm。我知道openes和宣言。我把它稱爲開放封閉原則的參考實現:) –

+0

謝謝 - 祝你好運! – Stuart

相關問題