1

我正在为我的新 xamarin 表单应用程序使用 prism 7。我已经阅读了这个文档。

我有几个问题:

  1. 应用启动后我注册的 DI 接口很少。我们可以在 app.xaml.cs 中使用来注册,但是如果我们想在其他页面中注册或解析,除了从 app.xaml.cs保存和实例并在我们想要的任何地方使用它IContainerRegistry之外,还有什么方法可以做到这一点?IContainerRegistryIContainerRegistry

  2. 要注册一个类型,语法是:

    ContainerRegistry.RegisterInstance<ITextService>(new TextService());

但是我们如何注册一个单例呢?我看了几个例子,但我真的不明白怎么做?谁能举个例子?

更新:

注册一个单例,语法看起来像
containerRegistry.RegisterSingleton<ILoggerFacade, EmptyLogger>();,但如果我们只传递类型而不创建实例(在本例中为 EmptyLogger 的实例),我们如何正确使用注册它们?

4

1 回答 1

4

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

这注册了一个实例而不是类型,顺便说一句,注册一个类型ContainerRegistry.Register<IAnInterface, SomeImplementation>();

但是我们如何注册一个单例呢?

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

除了从我们想要的任何地方保存IContainerRegistry和使用它之外,还有什么方法可以做到这一点?IContainerRegistryapp.xaml.cs

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

于 2018-05-15T15:42:50.860 回答