gpt4 book ai didi

c# - 如何告诉 Ninject 为嵌套构造函数注入(inject)相同的实例?

转载 作者:太空狗 更新时间:2023-10-30 01:21:21 25 4
gpt4 key购买 nike

我有一个 Windows 服务应用程序,我想在其中使用 Ninject 作为我的服务类。有一些服务类使用其他服务类,比方说“较低级别”,或更通用的服务类。每个服务通常都需要一个用于数据访问的存储库。

例如,我有一个 IRepository 接口(interface)、一个 IServices1 和一个 IServices2 接口(interface)。后两者有 Services1 和 Services2 实现,它们都具有 IRepository 类型的构造函数参数。现在假设 Services1 的实现想要使用 IServices2 接口(interface)的一些方法,所以我将另一个构造函数参数添加到 Services1,类型为 IServices2。现在,当我手动实例化 Services1 类时,我会执行以下操作:

var repo = new MyRepository(); // implementing IRepository
var service1 = new Services1(repo, new Services2(repo));

这样我就可以确保这两个服务将使用同一个存储库(这是我的基本要求)。

我如何使用 Ninject 为这个场景准备一个 IServices1 实例,并通过适当的 IRepository 注入(inject)?还是我在使用这种方法时存在任何重大设计错误?

我不在 MVC 平台上,所以我这里没有请求范围,我认为如果它是 MVC 就可以完成任务。

最佳答案

看看 NamedScope 扩展。有这种情况的示例。

https://github.com/ninject/ninject.extensions.namedscope/wiki

关于c# - 如何告诉 Ninject 为嵌套构造函数注入(inject)相同的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com