Prism 7 DI 中的 Register、RegisterInstance 与 RegisterSingleton

2023-12-11

我正在尝试在 Prism 7 中注册 DI 服务。我发现以下所有方法都有效,哪一个是正确的方法?各自的情况如何?

public class AndroidInitializer : IPlatformInitializer
{
    static OpenAppService openAppService = new OpenAppService();

    public void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterInstance<IOpenAppService>(openAppService);

        containerRegistry.Register<IFacebookLoginService, FacebookLoginService>();

        containerRegistry.RegisterSingleton<IAppleSignInService, AppleSignInService>();

    }
}

首先,这些方法的作用完全取决于所使用的实际容器,尤其是当您超越完全微不足道的事情时。这可能是没有这方面的文档的主要原因。

话虽如此...

  • Register表示在注入给定接口时应使用给定服务,并且new将为每次注入创建实例。
  • RegisterSingleton不同之处在于使用相同的实例all注射。
  • RegisterInstance是相同的RegisterSingleton,但你必须提供一个实例。

这是正确的方法吗?各自的情况如何?

因此,大多数时候服务都注册为单例,因为您希望视图模型能够通过服务进行通信。示例:EventAggregator- 当一个视图模型发布事件时,您期望其他视图模型接收该事件,只有当他们使用与发布者发布的相同实例进行订阅时,才有可能实现这一点。不过,WCF 客户端不需要是单例,因为通信发生在服务器端。

您不想注册实例,因为这会混淆注册和解析,并且您必须绝对确保all在创建实例来注册实例时已经注册了实例的依赖项(通过调用Resolve,这本身就带有一丝邪恶)。如果您在一种方法中注册所有内容,那么这不是一个问题,但如果您有多个(相互依赖的)模块,这会变得更加令人头痛。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prism 7 DI 中的 Register、RegisterInstance 与 RegisterSingleton 的相关文章

  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • 在 CPP 类中将 C 函数声明为友元

    我需要在 C 函数中使用类的私有变量 我正在做这样的事情 class Helper private std string name public std getName return name friend extern C void in
  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names

随机推荐

  • Python/Pycharm,Ctrl-空格键不会显示代码完成

    我有以下文件 为什么当我按时代码补全不运行Ctrl Space在 r 之后 红色框中写着 没有建议 程序运行并输出 200 author hape import urllib request import urllib response p
  • “git push”删除未跟踪的远程文件

    我正在运行一个网络服务器 允许用户将图像上传到服务器 但是 我正在使用git管理我的源代码 以及git push操作会删除服务器上与我的本地结账不匹配的任何内容 所以我每次运行时都会丢失图像git push 起初我以为我可以protect上
  • 使用 Kinect 和 EMGU(OpenCV 包装器)进行机器人定位

    我正在开发小型 WPF 桌面应用程序来跟踪机器人 我的办公桌上有一个 Windows 版 Kinect 我能够执行基本功能并运行深度摄像头流和 RGB 摄像头流 我需要的是跟踪地板上的机器人 但我不知道从哪里开始 我发现我应该使用 EMGU
  • PyCharm 和 PYTHONPATH

    我有一个用于我的目录PYTHONPATH c test my scripts 在这个目录中 我导入了一些模块 它在我的 Python shell 中运行良好 如何将此目录路径添加到 PyCharm 以便我可以导入该目录中的内容 过时了 有关
  • float.Parse 中的浮动精度丢失

    float s float Parse 10499 9705314636 Now s有价值10499 97 有没有办法保存所有的精 度数字 您可能想查看浮点数 双精度数和小数之间的区别 特别注意 a 之间的区别binary浮点类型 和一个d
  • Facebook 爬虫目前是否在解析 DOM 之前解释 javascript?

    以下链接似乎表明它不能 Facebook Sharer 在共享我的 URL 时如何选择图像和其他元数据 但我想知道目前情况是否仍然如此 facebook 开发网站上的文档没有给出关于这一点的任何精确信息 在我运行的测试中 我从未见过它解释
  • 集合组查询是否从所有同名集合中获取数据?

    我有这个 Firebase Cloud Firestore 架构 my db gt users gt uid gt places gt placeId and my db gt places gt placeId 此集合组查询是否会在两条路
  • Python Sockets - 如何关闭服务器?

    我尝试用Python中的socket模块制作一个简单的聊天系统 一切正常 除了每次我想关闭服务器时都需要终止该进程 我不想每次都这样做 所以我的问题是 我怎样才能创建一个函数 当我输入时shutdown在服务器终端中 它会关闭整个服务器 我
  • Python - 填写并提交 HTML 表单

    我想使用 python 在网页上填写并提交表单 我想要与之交互的表单有几个使用 JavaScript 填充的下拉框 我看过机械化库 但它不处理 JavaScript 您能建议一个与表单交互的替代库 方法吗 Cheers Pete Selen
  • sendBroadscast VS startActivity。有什么不同?

    sendBroadcast 意图 和startActivity 意图 之间有什么区别 为什么这不起作用 Intent smsIntent new Intent Intent ACTION SENDTO smsIntent setData U
  • TCP 客户端-服务器 SIGPIPE

    我正在设计和测试一个基于TCP套接字 互联网域 的客户端服务器程序 目前 我正在本地计算机上对其进行测试 无法理解有关 SIGPIPE 的以下内容 SIGPIPE 的出现相当随机 它可以是确定性的吗 第一个测试涉及来自客户端的单个小 25
  • php - 从一种 json 格式转换为另一种格式

    我正在使用 php 从 mysql 数据库获取数据 并对获取的输出进行 json 编码 json encode data 结果数据的形式为 name aaa name bbb 我想将其放入一个更大的 json 对象中 并在网络浏览器中以以下
  • Rails EXECJS 运行时错误

    您好 我在 Demo index 中收到 ExecJS RuntimeError 下面是突出显示的第 6 行 下面是我的完整跟踪 有人可以回答 指出我调试此问题的正确方向以及调试轨道的良好参考 我是 Rails 新手 我的猜测是我错过了一个
  • Canny Edge 检测器阈值给出不同的结果

    我正在尝试找到图像的轮廓 在此之前我正在应用 Canny 的边缘检测器 它为不同的图像提供不同的结果 对于一张图像 它在阈值 min 40 max 240 处提供完美的轮廓 而对于其他图像 其阈值为 30 120 我想让它变得通用 通俗地说
  • fgets 不等待键盘输入

    我想从用户的键盘输入中读取两个字符串 这是我尝试过的代码 char nomFichier 50 emp 100 empEtNomFichier 150 printf nDonner le nom du fichier fgets nomFi
  • 从嵌套类设计嵌套反应形式

    我有以下课程 class License name string lots of other fields nameAttributes NameAttributes class nameAttributes NameAttributes
  • 请求响应的顺序与请求的顺序相同吗?

    我正在使用 grequests 使用相同的 url 但不同的参数从网站异步下载数据 例如 unsent requests for param in params assume params is a list containing diff
  • Linux 上的可执行格式列表 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 在哪里可以找到 Linux 系统上批准 支持的可执行格式的列表 我期待找到一个包含以下内容的列表ELF Shebang a outETC 我已经知道我可以找到 proc sys fs
  • Flex 中的自动化测试

    我想自动化测试 Flex 应用程序 我听说 Flex 提供了可以帮助您自动化测试的类 但我不知道在哪里可以找到它们以及如何使用它们 有人可以帮助我解决这个问题吗 任何提示或建议将不胜感激 是的 这就是所谓的功能测试 Adobe 为 UI 组
  • Prism 7 DI 中的 Register、RegisterInstance 与 RegisterSingleton

    我正在尝试在 Prism 7 中注册 DI 服务 我发现以下所有方法都有效 哪一个是正确的方法 各自的情况如何 public class AndroidInitializer IPlatformInitializer static Open