gpt4 book ai didi

c# - 如何在不创建循环引用的情况下在多项目解决方案中使用 SimpleInjector

转载 作者:太空狗 更新时间:2023-10-29 18:20:25 24 4
gpt4 key购买 nike

我正在启动一个多项目解决方案,它将有多个入口点,例如 Windows 服务、ASP.NET 网站、WebApi Controller 等。我选择了 SimpleInjector,因为它非常快,但我不喜欢需要任何高级功能。

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

  • NS. Controller
  • NS.Core.Data
  • NS.Core.Data.Model
  • NS.Web
  • NS.WindowsService(假设它不会一直运行)

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

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

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

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

更新:

史蒂文在下面的评论中提供的链接给出了这个问题的完整答案。

Where to locate Ninject modules in a multi-tier application

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

最佳答案

为什么不使用IPackage 接口(interface)?您可以在每个模块中创建包,然后在每个入口点调用 container.RegisterPackages();。例如,NS.Core.Data 的所有配置都将位于 NS.Core.Data.dll 中,依此类推。然后,它将在 NS.WebNS.WindowsService 中可用。在 NS.Web 中,只需配置指定给它的类型,然后调用 container.RegisterPackages(); 等等。您的 NS.Core.Data 包可能如下所示:

public class CoreDataPackage : IPackage {
public void RegisterServices(Container container) {
container.Register<ISomeService,SomeImplementation>();
// etc...
}
}

关于c# - 如何在不创建循环引用的情况下在多项目解决方案中使用 SimpleInjector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585537/

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