我有幾個使用Ninject for IoC的PCL。現在我正在嘗試用MvvmCross創建一個Android Xamarin項目。 guide表示我可以按照兩個步驟繼續使用Ninject而不是MvvmCross實現。覆蓋MvxAndroidSetup.CreateIocProvider打破與MvxBind的綁定:錯誤:未找到視圖類型 - LinearLayout(TextView,EditText ...)
這裏是我的Setup.cs:
public class Setup : MvxAndroidSetup
{
...
protected override IMvxIoCProvider CreateIocProvider()
{
return new NinjectMvxIocProvider(... some NinjectModule[]...);
}
}
我就把NinjectMvxIocProvider here的實施。
它看起來相當好適合我,但造成這種輸出的是在我的佈局中的所有觀點:
MvxBind:Error: 70.85 View type not found - EditText [0:]
MvxBind:Error: 70.85 View type not found - EditText
11-02 15:56:05.872 I/mono-stdout(4824): MvxBind:Error: 70.85 View type not found - EditText
和綁定不工作,雖然與適當的服務實現創建正確的ViewModels。
如果我刪除override IMvxIoCProvider CreateIocProvider()
從Setup.cs
綁定工程。
這個實現有什麼問題,我只是看不到?也許有人有另一個實施,並準備分享?
我認爲這是在ninject包裝中的錯誤 - 它提供了空實現了兩個關鍵的回調方法 - 看https://github.com/migrap/Cirrious.MvvmCross.Ninject/blob/master/src/Cirrious.MvvmCross.Ninject/NinjectMvxIocProvider.cs#L19 - 你可以通過編輯包裝來存儲回調來解決這個問題 - 然後使用一些機制在構建過程的最後一步中調用所有回調。 – Stuart
@Stuart,這正是我在閱讀您的評論之前所做的!我受到你的'MvxSimpleIoCContainer'的啓發。非常感謝! – foxanna