我是Prism的新手,当我在使用Prism(Prism.Forms 6.2.0 Preview 3)和Xamarin Forms时,我正在寻找关于viewModel实例化期间可用对象的一些指导 .
我看到在导航到view / viewmodel时框架提供了INavigationService和IEventAggregator参数值 . 请参阅下面的代码以获取说明 .
public ViewBViewModel(INavigationService navigationService, IEventAggregator ea)
{
_ea = ea;
_navigationService = navigationService;
}
navigation和ea对象(上图)由Prism填充 .
Question: 框架(在INavigationService和IEventAggregator之外)可以在viewModel实例中自动填充哪些其他对象?谢谢 .
2 回答
看起来这些是为您注册的实现:
INavigationService
IApplicationProvider
IModuleManager
IModuleInitializer
IEventAggregator
IDependencyService
IPageDialogService
ILoggerFacade
见源here .
话虽这么说,我只熟悉
INavigationService
,IEventAggregator
和IPageDialogService
.ILoggerFacade
看起来很有趣 .参见文档here .
您可以解析向容器注册的任何服务/对象 . 使用
PrismApplication
中App.xaml.cs
的RegisterTypes()
方法中的容器注册对象 . 然后通过注入构造函数来解决它 .如果你有一个特定于平台的依赖项,那么在你的应用程序初始化程序中注册这些服务,例如在iOS中,你的
AppDelegate.cs
将加载像这样的Xamarin.Forms应用程序,初始化程序可能如下所示
此外,您可以将第三方插件注册为
RegisterInstance
并将其注入您的课程中 . 例如,假设您使用Acr.UserDialogs
插件进行警报,而不是在任何地方使用static
实例(这将使单元测试变得有趣),您只需将其注册到容器即可并在需要的地方注入 .
PS:如果第三方插件没有公开抽象,你可以包装一个静态并使用它来注册和解析 .