加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在多项目解决方案中使用SimpleInjector而不创建循环引

发布时间:2020-12-15 08:05:18 所属栏目:百科 来源:网络整理
导读:我正在启动一个多项目解决方案,它将有多个入口点,例如 Windows服务,ASP.NET网站,WebApi控制器等.我已经确定了SimpleInjector,因为它非常快,我不需要任何高级特征. 我的理解是SimpleInjector应该在启动时集中配置.从以下基本示例项目集开始 NS.Controllers NS
我正在启动一个多项目解决方案,它将有多个入口点,例如 Windows服务,ASP.NET网站,WebApi控制器等.我已经确定了SimpleInjector,因为它非常快,我不需要任何高级特征.

我的理解是SimpleInjector应该在启动时集中配置.从以下基本示例项目集开始

> NS.Controllers
> NS.Core.Data
> NS.Core.Data.Model
> NS.Web
> NS.WindowsService(假设这不会一直运行)

有多个入口点,SimpleInjector的引导应该在哪里进行,可以/应该集中处理(在这种情况下,配置过程需要引用所有项目才能设置所有解决方案类)?

我是否应该有一个全局实例(例如NS.Global.Container),它不引用任何其他项目,并且每个入口点都负责在启动时添加自己的实例要求(优雅地处理重复注册,如NS.Core.Model)?

我是否应该使用ResolveUnregisteredType事件来处理请求的注册?

我只是缺乏一些小学生的知识吗?

更新:

Steven在下面的评论中提供的链接提供了对此问题的完整答案.

Where to locate Ninject modules in a multi-tier application

How to initialize Ninject in a class project part of an mvc site

解决方法

每个入口点都应该有自己的自举容器.

NS.Web应该有一个,因为那是一个网站(我在这里假设).
NS.WindowsService应该有一个,因为它是.exe(服务).

其他项目看起来像类库,因此他们没有自举容器.

理论上,是的,您可以在每个类库中定义一个部分引导容器,然后您可以在主引导容器(在Web /服务项目中)中使用它,以使生活更轻松.在部分容器中,您将为该类库的组件执行引导.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读