【发布时间】:2020-12-17 05:33:55
【问题描述】:
具有讽刺意味的是,problem DI 试图解决的正是项目中已创建的问题。是否有任何资源可用于使用框架,让我能够挑选和选择我想要使用/启用的功能以及我想要省略的功能?
如果不使用依赖注入技术,管理依赖和开发模块化和结构良好的应用程序是非常困难的。
我强烈反对;并且相信情况正好相反,因为在很多情况下,没有 DI 的情况比有 DI 的情况更常见。
目前,我一直在尝试通过手动调用所有类来尝试使用该项目,因为 DI 已损坏并且经常出错,抛出模糊或无用的异常并阻止应用程序执行。我无法正确彻底地调试它,这不是我正在寻求的帮助。
严格来说,提出的问题是,我想使用框架不使用依赖注入,有解决方案吗?如果是,您能否以逐步或复制粘贴的形式提供它们?我可以在没有它的情况下使用该框架,还是我的任务是编写自己的,因为它无法保持其功能模块化?
我的解决方案 到目前为止,我正在尝试重构整个框架以从框架的基础中删除 DI 逻辑(它耦合在 [root ] 函数而不是在它们旁边?);但我不确定是否有解决方法,如果可能的话,如果我不想启用它,请严格不要使用它。
我已经创建了一个基于接口的存储库类,然后我对一些使用该存储库的管理器类进行了一些更改......但是还有商店,其他管理器(相互堆叠的重复层) ,缓存(不知道为什么它被分层到基础中),UoW(不需要这个,不能把它清空),出版商(不知道如何把这个拉出来),还有一大堆其他的,逻辑里面的逻辑,不需要以项目分层的方式进行结构化。整体感觉更像是一座积木塔,而不是一个以职责隔离为开发实践核心的灵活框架。
编辑
相关 StackOverFlow 问题:
AspNet Core3 Identity configuration
我尝试过的:
Multiple Identities in ASP.NET Core 2.0
ASP.NET Identity without Entity Framework
How to resolve generic interface to generic implementation when using dependency injection?
How to implement Unit Of Work pattern with Dapper?(使用它使 Abp.UoW 接口可以为空,但还有其他领域在框架核心层的函数之间强制使用 UoW 逻辑)
基本上,任何包含“没有 dbcontext”、“没有实体框架”、“没有依赖注入”、“使用 dapper”的搜索结果,所有包含“asp 身份”的搜索结果都是我正在使用的搜索查询。
修改前和修改后(尝试使用我自己的应用服务和域模型)都成功了
启动应用程序时出错。 AggregateException:无法构造某些服务(验证服务描述符时出错'ServiceType:Microsoft.AspNetCore.Identity...
这基本上是依赖注入破坏,并且不清楚问题是什么,此外......“你不能使用这个继承整个框架和 DI 引用的接口/抽象类的类。”所以我不喜欢使用 DI,而是解决它,因为解决方案不能可靠地解决我的问题。
【问题讨论】:
-
在您“不得不”应用 DI 之前,您是如何编写代码的?
-
即使从 ABP 中移除 DI,AspNet Core 也完全依赖于 DI。你将如何处理?
-
@Steven 在 MVC 之前,我使用的是 WebPages/Razor,它现在在 NetCore 中已经过时了,所以我使用的是 MVVM/Razor,我基本上是在启动时将我想要/需要的一切实例化到一个单例变量。
-
@hikalkan Idk 关于 aspnet 核心,我只是想获得身份服务,其他对我来说都不重要。我只想登录、注销并将用户与数据库匹配(没有实体框架)......无论其他东西塞进 aspnet 核心,不应该是我需要解决的问题,因为网页很好,没有所有的膨胀。
-
@user3681384,因此您希望在启动时实例化所有内容。但是是什么阻止你这样做呢?您能否更新您的问题并说明您尝试了什么以及遇到了什么问题?
标签: dependency-injection aspnetboilerplate abp asp.net-boilerplate