【发布时间】:2019-02-14 22:48:37
【问题描述】:
我正在学习 .NET Core 2,但我不喜欢 DI 的管理方式……在网上我读到了类似以下步骤的内容:
创建类似 IService 的接口
为 IService 创建一个实现
将其添加到 .NET Core 容器的作用域中到解决依赖关系的 Startup.Configuration 方法中。
终于可以在我的自定义控制器的构造函数中使用它了。
在 .NET classic 中,我使用了专用的 XML 配置文件来管理依赖项:我可以使用配置文件(JSON 或 XML 相同)来做我在 Startup.Configuration 方法中必须做的事情吗?
...否则有人可以解释为什么将服务配置到 Startup.Configuration 是更好的方法吗?
非常感谢...
【问题讨论】:
-
专用 XML 配置文件?你用的是什么图书馆?不过,没有什么能阻止你编写自己的版本,听起来很简单。
-
如果感觉更好,你不能使用你正在使用的同一个库吗? .NET 本身并没有真正的 DI,Core 确实有一个默认实现,但你可以使用任何你想要的方式或库,只要它支持 Core
-
我还没有找到适用于 .NET Core 的 WindsorCastle...但我的意思是:我无法想象 .NET Core 的默认 DI 容器不被认为与 appsettings.json 配置一起使用! !为什么我必须做类似代码的方法而不是 json 配置?我只是想了解...谢谢。
-
我觉得你不喜欢用于 DI 的常规方法真的很奇怪。几乎所有其他人都对此感到满意,那么是什么让您如此烦恼?
-
这是一个难题,往往会根据您的意见得到答案。通过 XML 配置依赖项总是很困难并且容易出错。当您重命名一个类或接口时,它不会重构您的 Xml 配置,并且在您尝试运行它刚刚发出的错误的应用程序之前,您没有任何错误... 基于代码的 DI 配置是类型安全的,并在 IDE 中为您提供编译错误当您重命名类(不重构重命名)或只是重构重命名时,它会在任何地方更新它。
标签: asp.net-core dependency-injection .net-core asp.net-core-mvc asp.net-core-webapi