首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Simpleinjector:当我有2个实现并想要选择一个时,这是RegisterManyForOpenGeneric的正确方法吗?

当然,我可以帮您完善和全面回答这个问题。

首先,Simpleinjector 是一个用于创建依赖注入容器的库,它允许您管理组件的生命周期,并处理注册和注入。

关于您的问题,RegisterManyForOpenGeneric 方法是用于注册多个组件以实现开放超集接口的。如果您有两个实现并想要选择一个,您可以使用 RegisterManyForOpenGeneric 方法来注册它们。但是,这需要您确保这两个实现是兼容的,并且不能同时注册。

例如,假设您有一个 IRepository 接口,它定义了一个 Save 方法。您有两个实现,一个是 SqlRepository,另一个是 MongoRepository。您想要在应用程序中使用 SqlRepository,但如果两个实现同时存在,则会引发冲突。在这种情况下,您可以使用 RegisterManyForOpenGeneric 方法来注册这两个实现,以便它们可以共存。

以下是一个示例代码:

代码语言:csharp
复制
container.RegisterManyForOpenGeneric(typeof(IRepository<>),
    new[] { typeof(SqlRepository), typeof(MongoRepository) });

在这个示例中,我们将 IRepository 接口的泛型参数指定为 SqlRepositoryMongoRepository 类型的组合。这将允许 Simpleinjector 注册这两个实现,以便它们可以一起使用。

请注意,在使用 RegisterManyForOpenGeneric 方法时,您需要确保您注册的组件之间是相互兼容的,否则可能会出现类型不匹配或其他错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【事件驱动架构】专家组:事件驱动大规模架构

然后当我开始管理云中Kafka,我们发现自己一块巨石(monolith),我们知道我们必须解决它。你总是从一块巨石开始。他们写得很快。我们知道我们想要更好东西,我们很多不同选择。...克拉克:从来没有一个正确答案。我们两种方法。有时您可以使用编排设置来操作它,有时则不能。...即使您技术非常擅长在正确位置发布正确内容,保证至少一次一致性,您也必须在某个时候处理内容重复,因为这只是您工作一部分。 瑞兹:伊恩,格温,什么想法?...托马斯:我真的很喜欢燕翠,他在这一点上做出了妥协,这是一个有界背景下,编曲可能是正确选择。当你观察不同环境之间交流,事件驱动编舞才真正开始发挥作用,而且它很强大。...我建议与此类似,不要强制在不需要地方安装它,但在设计数据也要非常慎重,以允许其不断发展。请记住,您选择实现方式。你需要SNS、SQS还是运动?

78220

从电子宠物到机器人:人类与机器能擦出不一般友谊

虽然这是一个非常开放哲学问题,但我试图把它归结为一个具体技术问题。但为此,我不得不考虑更深层次问题。 软件何时和我们成为朋友?   还记得电子宠物?它们是你一直随身携带数码宠物。...我喜欢科幻电影原因可能和其他人喜欢科幻惊悚小说原因大不相同。当我想要生成绝对准确建议,协同过滤可能是一个巨大缺陷。但点对点( P2P)建议呢?   ...这是取决于我们需要被理解?还是两者皆有? 超越个性化友谊   尽管我尝试编写代码找出一个模型,但我仍然没有取得太多进展。...我真的很想创建出这个模型,展示类似人类上下文关系工作个性化模型,而这个模型是基于机器人建立。   我试了一个星期,结果没有取得任何进展,这是我在尝试之前所意料之中问题。...在人工智能时代,任何你能想到东西都可以通过正确数据集实现。我们不应该在追求人工智能过程中引入“主从二分法”,而是应该选择制造出具备情感和能成为朋友机器。

52420

精读文章:高级软件工程师成长秘诀

一些公司许多员工,一个一个地更新他们信息是一件痛苦事情。我编写代码可以减轻 Sarah 痛苦。 学习好思维习惯 软件工程需要善于思考并作出正确决策。编程就是实现这些决策。...只有当我被某件事情困扰,或者当我发现我抽象和设计决策不起作用时,我才寻找新工具。 例如,我最近正在为许多复杂业务逻辑领域头疼。边缘案例很常见,我们想要设计一个系统来很好地处理这个问题。...我仍然这样做原因是 绘制技术图——这是我了解现有的技术,那么当我遇到问题,我会知道一个方法可能会有所帮助。 我获取更好思维模型最后一种方法是通过学习新不同语音。这种多样性很重要。...当我不复制粘贴现有模板,我速度就会降下来。但当我足够空闲时,我选择在写代码之前达到层次 1 理解。这通常意味着我第一次时候会很慢,但是随着时间推移,我会变得更快。...当我修改某个事情花费时间超出了预期,我就会开始进入这种状态。 比如下面这个具体例子。我参与对我们新构建一个队列系统测试,我想要模拟饥饿和竞争队列消费者。

37920

笨办法学 Python · 续 练习 26:`hexdump`

这是“测试优先”开发真正帮助地方,因为它自动化了模仿另一个软件流程。 当你需要编写一个糟糕软件替代品,这种技术非常有用。...注 当我说“先写一个测试”,我意思并不是一个庞大test.py文件,它具有所有的函数和大量虚构代码。我意思是我以前教过东西。...挑战练习 当你想要查看不是可见文本文件内容,hexdump命令很有用。它以各种有用格式显示文件中字节,包括十六进制,八进制,并且后面带有 ASCII 输出。...所以 10 不是十进制中 10,它是十六进制。你知道十六进制? 十六个空格分隔,两列十六进制字节。这是转换为十六进制每个字节。多少列代表一个字节?...如果可以的话,可以制作一个他们都使用库。 深入学习 有人主张只做“测试优先”开发,但我相信没有永远适用技术。当我从用户角度测试软件交互,我更喜欢写测试。

39420

程序员如何提一个好问题

那是不正确!实际上没有递归式DNS服务器链。(当你谈到递归式DNS服务器,只涉及一个递归式服务器)因此他们说出他们当前理解,可以方便我们澄清它实际上工作原理。...我知道Hadoop有时会“hash连接”——这是其他数据库引擎也使用一个连接策略当我一个索引列和一个未索引列之间进行连接,我需要对非索引列进行排序?...当我问像这样超级具体问题,被问的人并不总是知道答案,但至少他们理解了我感兴趣问题是怎么样——很明显,我并不想知道如何使用连接查询,我就是想了解一些实现细节和算法。...如果你正在攀登一个新项目,那么回答那些正在学习你刚学完那些内容的人问题,可谓是巩固知识方法。...每当我第一次回答关于一个新主题问题,我总是会有一种“OMG,要是我答错了该怎么办啊,OMG”感觉。但通常我都可以正确回答他们问题,然后我就会感觉自己棒棒哒,好像自己更好地理解了主题!

66130

程序员如何提一个好问题

那是不正确!实际上没有递归式DNS服务器链。(当你谈到递归式DNS服务器,只涉及一个递归式服务器)因此他们说出他们当前理解,可以方便我们澄清它实际上工作原理。...我知道Hadoop有时会“hash连接”——这是其他数据库引擎也使用一个连接策略当我一个索引列和一个未索引列之间进行连接,我需要对非索引列进行排序?...当我问像这样超级具体问题,被问的人并不总是知道答案,但至少他们理解了我感兴趣问题是怎么样——很明显,我并不想知道如何使用连接查询,我就是想了解一些实现细节和算法。...如果你正在攀登一个新项目,那么回答那些正在学习你刚学完那些内容的人问题,可谓是巩固知识方法。...每当我第一次回答关于一个新主题问题,我总是会有一种“OMG,要是我答错了该怎么办啊,OMG”感觉。但通常我都可以正确回答他们问题,然后我就会感觉自己棒棒哒,好像自己更好地理解了主题!

84050

HashMap工作原理

当我们给put()方法传递键和值,我们先对键调用hashCode()方法,返回hashCode用于找到bucket位置来储存Entry对象。”...然后面试官可能会提醒他们equals()和hashCode()两个方法告诉他们两个对象就算hashcode相同,但是它们可能并不相等。...如果两个不相等对象返回不同hashcode的话,那么碰撞几率就会小些,这样就能提高HashMap性能。     我们可以使用自定义对象作为键? 这是一个问题延伸。...当我们将键值对传递给put()方法,它调用键对象hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。...当获取对象,通过键对象equals()方法找到正确键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表一个节点中。

58230

HashMap工作原理

当我们给put()方法传递键和值,我们先对键调用hashCode()方法,返回hashCode用于找到bucket位置来储存Entry对象。”...然后面试官可能会提醒他们equals()和hashCode()两个方法告诉他们两个对象就算hashcode相同,但是它们可能并不相等。...如果两个不相等对象返回不同hashcode的话,那么碰撞几率就会小些,这样就能提高HashMap性能。 我们可以使用自定义对象作为键这是一个问题延伸。...当我们将键值对传递给put()方法,它调用键对象hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。...当获取对象,通过键对象equals()方法找到正确键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表一个节点中。

73380

程序员如何提一个好问题

那是不正确!实际上没有递归式DNS服务器链。(当你谈到递归式DNS服务器,只涉及一个递归式服务器)因此他们说出他们当前理解,可以方便我们澄清它实际上工作原理。...我知道Hadoop有时会“hash连接”——这是其他数据库引擎也使用一个连接策略当我一个索引列和一个未索引列之间进行连接,我需要对非索引列进行排序?...当我问像这样超级具体问题,被问的人并不总是知道答案,但至少他们理解了我感兴趣问题是怎么样——很明显,我并不想知道如何使用连接查询,我就是想了解一些实现细节和算法。...如果你正在攀登一个新项目,那么回答那些正在学习你刚学完那些内容的人问题,可谓是巩固知识方法。...每当我第一次回答关于一个新主题问题,我总是会有一种“OMG,要是我答错了该怎么办啊,OMG”感觉。但通常我都可以正确回答他们问题,然后我就会感觉自己棒棒哒,好像自己更好地理解了主题!

1K40

色盲在左,设计在右

每次人们发现我是色盲后,总会问我同样问题:“所以,这个是什么颜色?”95%时候我都回答正确,紧跟而来是,“等等,如果你能分辨这是{插入颜色},那么你怎么可能是色盲?你都看到什么了?”...这就是说,在设计应用app,我们不应该仅仅注意到个别的颜色,观察它们是否‘可见’,而是应该将颜色分组,观看每组颜色之间是否区别。...我通常不需要去找另一个色盲朋友帮助我验证颜色选择当我向客户解释颜色选择,我不太专注于颜色名称上,更多是关于色温或者颜色值,这些颜色是否能促进或说明我想要感觉。...即使挑选合适使用颜色也会变得更容易。我会坐在这里混合涂料,直到我找到一个完美的蓝色阴影?不会。我会期望那些正常视觉的人做到这一点?不会。事实上,我倾向于借用预制调色板。...但我希望,这是因为你想要确保你应用处于最佳水平,供所有人使用。即使只有一小部分人是色盲,我们就要在设计时候考虑进去。

94210

GPT近期发展方向--OpenAI 联合创始人20230421在 TED 大会演讲(图文版)

现在,重要是我们如何构建它,这不仅仅是构建这些工具。这是关于教人工智能如何使用它们。比如,我们甚至希望它做什么。当我们问这些非常高层次问题?为此,我们使用了一个古老想法。...一位人类老师在尝试事物做好事或坏事提供奖励和惩罚。”这正是我们训练 ChatGPT 方式。这是一个两步过程。首先,我们生产图灵所谓子机,通过无监督学习过程。...但幸运是,你可以问机器,“你能做一些探索性图表?”这是一个超高级指令,背后有很多意图。但我什至不知道我想要什么。人工智能必须推断出我可能感兴趣东西。所以我认为它会提出一些好主意。...但我认为这个故事表明,一个拥有医疗专业人员和 ChatGPT 作为头脑风暴合作伙伴的人,能够实现之前不会发生结果。我觉得这是我们都应该反思当我们考虑如何将这些系统集成到我们世界,请思考。...(笑声)所以我认为重要是我们一步一步来。我们说,好吧,当我们继续进行书籍摘要,我们必须适当地监督这项任务。我们必须用这些机器建立记录,他们能够真正实现我们意图。

1.2K160

作为AI产品经理,我们到底在优化什么?

在文章中他提到,产品经理需要了解她客户,需要了解自己工作环境、使命、想要实现什么以及挑战,然后才能设计出最能满足这些需求目标解决方案。 以下是他对“作为AI产品经理,我们到底在优化什么?”...AI是一种解决问题实现方法,但其预测性对用户体验和可用性重要影响。 当一家公司为任何市场或类别设计基于AI解决方案,它总要扪心自问,我们为什么优化产品?...我们精度为100%。 这是否意味着我终极下雨预测器?这并不确定。让我们看看其他90天。 当我们计算下雨天总数,我们发现实际上总共有20个下雨天。这意味着什么?...现在,当我们真正了解差异,我们应该如何优化我们模型和产品? 精确度或召回率?大多数时候我们必须选择其一,精确度和召回率都高几乎是不可能。...机场安检 作为乘客,你宁愿在漫长警戒线中等待,以免危险意外通过安检?还是更愿意快速通过这些检查,承担枪可以走私到飞机风险?监管者肯定会选择避免风险。

58330

Flutter学习笔记:BottomNavigationBar实现多个Navigation

这是一个BottomNavigationBarapp: ? 1_yptwp6Ahe_-yhrLTg-NqwQ.png 我们想要是每个选项卡都有自己Navigation堆栈。...每个子布局都是一个带有子NavigatorOffstage控件。 不要忘记使用WillPopScope处理Android后退导航。 想要更长更有趣解释?...在第38行,我们实现了build(方法,该方法返回一个Navigator对象。 这需要一个key和一个initialRoute参数。...多个Navigator 这是因为我们已经定义了一个导航器,但这是在所有三个选项卡中共享。 记住:我们想要是每个标签独立导航堆栈!...这是我们确保使用多个导航器所需。 我们脚手架身体现在是一个三个孩子堆栈。 每个子项都在_buildOffstageNavigator()方法中构建。

4.2K20

消失中国互联网元老陈天桥:为神经科学捐助10亿,不担心机器人崛起

从根本上说,你必须经历这样痛苦,即使是在你感到快乐那一刻。所以我说,佛说是对当我们决定掀开新的篇章开始捐赠,我们关注是如何减轻这样痛苦和煎熬。...当我们这样做,有人说:“不,为什么要选择痛苦?疼痛是一种疾病症状。你应该治愈这种疾病,因为没有疾病,就没有痛苦。” 我告诉他们:“不,疾病也是一种症状。”疾病是死亡症状,是通向死亡道路。...我想我一些精神障碍,而且我真的相信一定有什么不对劲。例如,当我乘坐飞机时,我是一个非常理性的人,我知道这是最安全交通工具,但我仍然害怕。 但是在服用药后,它突然消失了。...所有的行为都是由一组神经元控制。所以这是一个假设——我们是化学机器人。 在未来,通过戴头盔下载一些软件来激活神经元,也许还可以创造一个世界。这都是可能。 Q:您觉得这会是件好事?...这是我们想要这是一个价值判断问题,就我而言,保持多样性会更好。 Q:您提到对虚拟现实感兴趣。作为一个在数字娱乐业取得财富的人,您怎么看待它对未来影响? 陈:我总是说VR最终版本就是做梦。

43300

条件型业务规则抽象与实现——从Spring Profile得到灵感

当我们更倾向于使用具体场景沟通时候,团队更不容易意识到需要从中寻找稳定抽象。那么我们需要花费精力去改变用户思维方式,如果需要又应该使用什么样方式?...(经过简化用户故事——火车票预订) 作为用户,当我预订火车票,我应该被告知配送地址无法送达,以便我调整配送地址或选择上门取票。...几个迭代过后有了新产品需要支持:观光景点,需要配送门票给用户,所以一个类似的用户故事诞生了: (经过简化用户故事——门票预订) 作为用户,当我预订景点门票,我应该被告知配送地址无法送达,以便我调整配送地址或选择上门取票...我认为这是由于没有找到正确抽象,对于条件型业务规则,其实是稳定步骤: 检测当前情况是否需要验证给定业务规则 如需要,执行验证;如不需要则略过 如果将AddressIsAvailableToDelivery...,以便我调整配送地址或选择上门取票 作为运营人员,我可以设置产品在预订是否需要检查配送地址,以避免预订后无法配送凭证情况 BA对此提出了担心: 在这个实现方案中,平台运营团队需要为不同产品设置不同规则

33410

TypeScript: 请停止使用 any

它对我们系统有害?我们应该逃避它还是拥抱它? any 类型是使用现有 JavaScript 强大方法,可让您在编译期间逐渐选择加入和选择退出类型检查。...TypeScript 文档明确表达了当我们使用any类型,我们正在告诉编译器: ? 当超过500名该语言贡献者提供帮助,我们说 no thank you。...这听起来像是选择退出类型检查器,了它,就不能轻易地放弃对类型系统所有安全性和信心。我们应该使用它来与无类型第三方(或第一方) Javascript 代码交互,或者当我们只知道类型一部分时。...了文档,我可以提供所有上下文 添加类型,我们会从编译器获得帮助,并且会获得不会随时间推移而衰减文档,因为如果过时了,我们代码将无法编译。...它使编译器过时了,我们告诉编译器:我不需要你帮助 我们放弃了在编写代码记录代码机会 我们第一道防线被攻破了 在动态语言中,我们假设事物可以 any 类型,我们采用模式遵循这个假设。

1.1K21

python hexdump_笨办法学 Python · 续 练习 26:`hexdump`

这是“测试优先”开发真正帮助地方,因为它自动化了模仿另一个软件流程。 当你需要编写一个糟糕软件替代品,这种技术非常有用。...注 当我说“先写一个测试”,我意思并不是一个庞大test.py文件,它具有所有的函数和大量虚构代码。我意思是我以前教过东西。...挑战练习 当你想要查看不是可见文本文件内容,hexdump命令很有用。它以各种有用格式显示文件中字节,包括十六进制,八进制,并且后面带有 ASCII 输出。...所以 10 不是十进制中 10,它是十六进制。你知道十六进制? 十六个空格分隔,两列十六进制字节。这是转换为十六进制每个字节。多少列代表一个字节?...如果可以的话,可以制作一个他们都使用库。 深入学习 有人主张只做“测试优先”开发,但我相信没有永远适用技术。当我从用户角度测试软件交互,我更喜欢写测试。

37720

笨办法学 Python · 续 第二部分:简单黑魔法

在绘画中,当我不能开始,我只是随意抓取颜料,并在画布上砸在正确位置。很多非常成功画家都是这样工作。其他画家从头开始研究 - 学习,测试,素描,然后最终将它们全部放到一起来开始。...我不会问,“我很聪明?”我只是写出我如何说话,并将其输入键盘,然后当我完成了几个段落,我会看一看。它是否有意义?我需要清理?这样的确有效,让我继续下去。也许我写是垃圾。...这是一个例子,但你需要一个检查列表,并且越短越好。 但你不知道这个清单是什么。也许你一个想法,但你在开始工作之前真的知道你所做一切?这就是每个项目中,你将重点关注东西。...一旦你了 TODO 列表,你就可以启动定时器了。在你 Hack 会话中,你将执行以下操作: 选择 TODO 上第一个最简单任务,完成它。你需要一个文件?创建它!你需要一个目录?...如果你可以用你中文(或任何自然语言)来表达你想要代码,那么你可以轻松地实现代码,而不必考虑代码。最终你不需要先写注释再写代码,但是当我卡住时候我还是这样做

36220

平面检测-搜索真实世界表面

ARSCNViewDelegate是一种协议,它包含许多方法来帮助跟踪摄像机视图中对象。方法就像程序或例程来实现某些东西。 在编程中,委托是一种设计模式,允许类将其职责委托给另一个对象。...当我们在它,向下滚动删除Mark下注释掉代码,这是该协议下一个方法给定示例。Mark帮助我们分离文件中代码段。...现在,让我们从ARSCNViewDelegate实现一个方法来查找表面。键入didAdd并在选项中选择渲染器。该didAdd方法当相机检测到物体会通知我们,然后标记锚它。...修复平面节点 检查网格,您应该会看到一些问题。首先,网格是立起来,另一个问题是你只能看到飞机一侧网格。这是我们需要解决两个问题。 好吧,还记得在我们第一次拖动飞机作为屏幕手表场景?...幸运是,Swift一个功能,GLKMathDegreesToRadians,所以利用它。注释掉前一行代码替换为此代码。

2.9K30

社会工程:人性攻击科学(三)

在与一家公司合作,我帮助制定了关于网络钓鱼新政策教育。它大致是这样: 网络钓鱼对我们公司和你个人都构成威胁。恶意攻击者想要获取你信息,他们可以通过基于电子邮件攻击来实现。...当员工被测试,肌肉记忆会发挥作用?唯一方法选择合适安全顾问合作伙伴并与他们合作。 选择顾问合作伙伴是重要。...没有一种适合所有情况解决方案——这在很大程度上取决于你需求以及你想要实现目标。 另一个因素是你如何有效地应用第四步。...### 动机 我认为工作是每天上班完成任务,然后在一天结束将其忘记事情。如果你想要一份工作,成为一名专业社会工程师可能不是一个选择。成为一名专业社会工程师更像是一种职业。...这是我天生倾向于去方向,但当我开始更多地演讲和培训,我意识到对于这些任务来说,直接沟通并不像* I 类型(影响型)那样好。我练习了 I *型人沟通一些方式,开始在培训过程中使用这些技能。

2900
领券