我正在使用C#和Unity依賴注入在WPF中開發MVVM應用程序。我正在爲以下問題尋找最乾淨的解決方案。例如,我有一個類AudioChannelViewModel(讓我們簡稱爲A),我想註冊兩個類的實例,一個用於Channel.Left,一個用於Channel。對。這本身並不是一個問題,因爲我通過將它們命名爲RegisterType,然後在[Dependency(name)]
屬性中引用它們來註冊這些實例。使用枚舉參數化對象
此外,A取決於其他一些類,讓我們稱之爲Dep1,Dep2和Dep3。爲了執行A的初始化,我必須擁有我的所有依賴關係和關於Channel的信息。
我嘗試使用以下策略:
地產注入DEP1,DEP2和DEP3的,並通過與InjectionConstructor參數設置RegisterType A的通道中構造。但是,我應該如何知道A什麼時候可以初始化? AFAIK我不能假設任何有關物業注入訂單。
建設者注入所有四個項目。這將是恕我直言的最乾淨的解決方案,因爲我可以在構造函數中執行初始化。但是我無法在Unity中使用它。爲Channel註冊A與InjectionConstructor參數會引發異常,並且註冊四個InjectionConstructor參數看起來很難。
建設者注入Dep1,Dep2和Dep3以及Channel的屬性注入。然後我可以在Channel setter中初始化我的課程。它適用於這種情況,但是如果A會被多個屬性參數化,該怎麼辦?然後我不知道A何時完全建立並準備好進行初始化。
應該如何執行初始化?或者,我可能讓事情變得過於複雜。
哦,我只是不知道我可以將依賴類型傳遞給InjectionConstructor的構造函數。謝謝!你的方法完美運作。 – madbadger 2011-05-15 10:05:48