我目前正在移动一个mvvmlight
应用程序来使用Microsoft.Toolkit.Mvvm
并且在大多数情况下,它相对没有痛苦。
不过,我在向 Ioc.Default.ConfigureServices 添加服务时遇到了问题。
在平台特定的代码上,我创建了一个服务集合来处理特定于平台的事情(例如存储,用户设置等),如下所示
Ioc.Default.ConfigureServices(new ServiceCollection().
AddSingleton<ISqliteConnectionFactory, SQLConnection>().
AddSingleton<IFileservice, Storage>().
AddSingleton<IUserSettings, UserSettings>().BuildServiceProvider());
这在iOS和Android上都可以正常工作。但是,在我的ViewModelLocator
(来自旧的 mvvmlight 包)中,我无法向服务添加任何内容,因为默认服务集合已经设置
。 创建共享代码后,有没有办法将共享代码中的服务添加到Ioc.Default.ConfigureServices
?
我找到了一个简单的解决方案。
在平台上创建服务集合,并作为 IServiceCollection 传递给 App 方法。然后在调用BuildServiceProvider
方法之前,在应用程序中将其传递给 ViewModelLocatior 和从那里添加的服务。