Xamarin.forms Prism Xamarin形成可注射对象

Xamarin.forms Prism Xamarin形成可注射对象,xamarin.forms,prism,Xamarin.forms,Prism,我是Prism的新手,我正在寻找有关viewModel实例化过程中使用Prism(Prism.Forms 6.2.0 Preview 3)和Xamarin Forms时可用对象的一些指导 我看到,在导航到视图/视图模型时,框架提供了INavigationService和IEventAggregator参数值。有关说明,请参见下面的代码 public ViewBViewModel(INavigationService navigationService, IEventAggregator ea)

我是Prism的新手,我正在寻找有关viewModel实例化过程中使用Prism(Prism.Forms 6.2.0 Preview 3)和Xamarin Forms时可用对象的一些指导

我看到,在导航到视图/视图模型时,框架提供了INavigationService和IEventAggregator参数值。有关说明,请参见下面的代码

 public ViewBViewModel(INavigationService navigationService, IEventAggregator ea)
    {
        _ea = ea;
        _navigationService = navigationService;
    }
导航服务和ea对象(如上)由Prism填充

问题:
框架可以在viewModel实例中自动填充哪些其他对象(INavigationService和IEventAggregator之外)?谢谢

看起来这些是为您注册的实现:

  • 无活力服务
  • IApplicationProvider
  • IModuleManager
  • 初始值设定项
  • 伊文塔格鳄鱼
  • IDependencyService
  • IPageDialogService
  • 伊洛格立面
见资料来源

话虽如此,我只熟悉
INavigationService
IEventAggregator
IPageDialogService
<代码>iLogger外观看起来很有趣


请参阅文档。

您可以解析在容器中注册的任何服务/对象。使用
PrismApplication
中的
App.xaml.cs
方法的
RegisterTypes()
内的容器注册对象。然后通过注入构造函数来解决它

// Register
   Container.RegisterType<IYourObject, YourObject>();

// Resolve
   public SomeClass(IYourObject yourObject) 
   {
      _yourObject = yourObject;
   }
初始值设定项可以如下所示

public class iOSAppInitializer : IPlatformInitializer
{
   public void RegisterTypes (IUnityContainer container)
   {
       container.RegisterType<IMyService, MyService> ();
   }
}
并在需要的地方注射

public SomeClass(IUserDialogs userDialogs)
{
   _userDialogs = userDialogs;
}

PS:如果第三方插件没有公开抽象,您可以包装一个静态文件,并使用它来注册和解析。

感谢您提供了指向构造函数代码和其他注入项的链接。我还熟悉INavigationService、iVentaggregator和IPageDialogService。我会做一些额外的研究,这些其他注射对象和更新我的答案后,如果我发现好的信息。我想给你一分,但我的水平太低了。再次感谢。
RegisterInstance<IUserDialogs>(UserDialogs.Instance);
public SomeClass(IUserDialogs userDialogs)
{
   _userDialogs = userDialogs;
}