我在一個Xamarin項目中使用mvvm light SimpleIoC並使用實例鍵獲取一些視圖模型。Mvvm - 如何在SimpleIoC中獲取實例密鑰
SimpleIoc.Default.GetInstance<ContextViewModel>("contextIdentifier");
有沒有辦法在構造函數中獲取實例本身中的其他依賴關係?
我知道我可以在我的ContextViewModel
上創建和設置一個自定義屬性,但是由於我的類需要這個值才能工作,我不喜歡這種觀點模型的「非操作實例」。
編輯與更多的信息,解釋爲什麼我希望我的視圖模型實例知道它的標識:
這是一個Xamarin.iOS應用(ViewController
是由故事板創建)。在我的應用程序中,我有相同的視圖控制器的多個實例(和在同一UITabBarController
),所以,我需要爲每個視圖控制器實例不同的ViewModel實例。
由於我的ViewModel需要一個ID來從數據庫中獲取一些數據,我以爲我會用這個標識符作爲實例標識符。
我可以通過在我的視圖控制器的ViewDidLoad()方法中獲取我的ViewModel實例並調用一些Setters,但我不喜歡這個(也許我錯了:)),因爲在我的想法是,IoC應該只返回操作實例(不需要調用多個setter)。
此致敬禮。
我不明白你在做什麼。爲什麼實例需要知道(並關心)其實例密鑰? – Fildor
好吧,也許我做錯了,但在我的應用程序,我有相同的視圖控制器的多個實例,所以,我需要爲每個視圖控制器實例不同的ViewModel實例。由於我的ViewModel需要一個id來從數據庫中獲取一些數據,我想我也會使用這個標識符作爲實例標識符。 – n3k
啊,棘手......你能證明它們是如何相關的嗎?你的ViewController類是否有ViewModel字段?你如何創建你的ViewController?我可以想象,如果你通過ctor param將viewmodel注入到viewcontroller中,你可以在viewmodel中的ctor中設置一個字段,所以當控制器運行時它將被完全初始化......你能跟着我嗎? – Fildor