我有一個使用 Dryioc 進行 IoC 的 Xamarin 表單應用程式。一旦視圖超出范圍,我的所有服務似乎都會被處理掉
這就是我在 app.cs 中注冊服務的方式
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IInboxService, InboxService>();;
}
我在 app.cs 中以這種方式解決它
protected override void OnInitialized()
{
_started = DateTime.Now;
InitializeComponent();
InitializeAppSettings();
Container.Resolve<ISyncService>().Init(new List<ISyncableService>
{
Container.Resolve<IInboxService>()
});
}
當我需要在視圖模型中使用它時,我將它放在建構式中,就像這樣。
public class HomeViewModel {
public HomeViewModel(InboxService inboxService)
{
}
}
單身人士受到尊重,但它會在需要時處理并創建一個新的。還有其他人遇到這個嗎?
Xamarin 版本:5.0.0.2125
棱鏡版本:8.1.97
LocIOS 版本:8.1.97
uj5u.com熱心網友回復:
公共 HomeViewModel(InboxService inboxService)
這注入了一個具體的InboxService實體,它獨立于它可能實作的介面的注冊。如果你想要你的單身,請求一個IInboxService:
公共 HomeViewModel(IInboxService inboxService)
我嘗試為實作某個介面的服務提供一個有意義的名稱,而不僅僅是介面的名稱減號I,例如DummyInboxService, TestInboxService, ImapInboxService, Pop3InboxService, RemoteInboxService... 從而更清楚各自的實作實際上做了什么并幫助找到這些錯誤(很可能是拼寫錯誤)早期的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425098.html
下一篇:在發布模式下編譯Xamarin應用程式時出錯:System.InvalidOperationException:序列不包含任何元素
