(这是我到目前为止的第一篇文章,请放心) 我最近在ASP.NET Framework中使用Onion Architecture,一切都很好,直到老板告诉我他希望在新项目中使用类似的体系结构,但这次使用ASP.NET CORE。 基本上,ASP.NET CORE可以执行与框架相同的行为,但是我在强制DI作为Jeffrey Palermo定义的服务方面遇到问题。问题是ASP.NET CORE已经支持嵌入式DI,这很好,很方便,但是现在我完全想要完全不同的愚蠢的东西。因此,如果您遇到相同的情况,请分享!非常感谢。
[UPDATED_1]
谢谢@sellotape的建议,我将对其进行分解。
如上所述,该体系结构定义了每个服务(包括DI)都必须像洋葱层一样无所作为。这意味着DI本身一定不能依赖于框架(这次是ASP.NET CORE内置DI)。
这就是我的全部问题,跟上该体系结构只是一个挑剔的想法。
[UPDATED_2]
假设我的ASP.NET Framework项目结构如下所示:
*Onion.sln --(project solution) - Core --(solution folder) + Core.ApplicationServices --(project) + Core.ObjectModels --(project) + Core.ObjectServices - Infrastructure + Infrastructure.Data + Infrastructure.Log + Infrastructure.Identity - Services - Libraries - DependencyResolver
如您所见,由于DependencyResolver,我能够将所需的任何项目注入所需的任何项目。这种行为在ASP.NET CORE中似乎是不合法的,因为要执行此类操作,您需要将整个项目引用到另一个项目,因为“内置的DI容器仅是”项目范围”。这意味着,如果我想从彼此之间注入某种东西,那么我会在这两者之间建立紧密的联系,而这并不是依赖注入的目的。