在Prism 7 - Xamarin Forms中注册和解决DI容器

时间:2018-05-15 15:20:22

标签: xamarin xamarin.forms prism prism-7

我正在使用prism 7作为我的新xamarin表单应用程序。我已经查看了this文档。

我有几个问题:

  1. 应用程序启动后,我注册的DI接口很少。我们可以在app.xaml.cs中使用IContainerRegistry进行注册,但是如果我们想在其他页面中注册或解析,有没有其他办法可以保存IContainerRegistry和{{1}来自app.xaml.cs的实例并在我们想要的地方使用它?

  2. 要注册类型,语法为:

    IContainerRegistry

  3. 但是我们如何注册单身人士呢? 我看到几个例子,但我真的不明白怎么做?有人可以举个例子吗?

    更新

    要注册单身人士, 语法似乎是
    ContainerRegistry.RegisterInstance<ITextService>(new TextService());但是如果我们只是在没有创建实例的情况下传递类型(在本例中是EmptyLogger的实例),我们如何正确地注册它们呢?

1 个答案:

答案 0 :(得分:2)

  

要注册类型,语法为:ContainerRegistry.RegisterInstance<ITextService>(new TextService());

这会注册一个不是类型btw的实例来注册类型do ContainerRegistry.Register<IAnInterface, SomeImplementation>();

  

但我们如何注册单身人士?

ContainerRegistry.RegisterSingleton<ITextService, TextService>();执行此操作,顺便说一句,实例本质上是一个单例(因为di容器总是必须注入您注册的一个实例,因为它不能自己创建新实例)

  

有什么方法可以将IContainerRegistryIContainerRegistry实例从app.xaml.cs保存并在任何我们想要的地方使用它吗?

我建议在一个地方注册所有内容,而不是在整个项目中散布注册。但如果你确定了,你可以在任何地方注入IContainerRegistry并注册你的东西。

相关问题