我应该在根级别解决所有依赖项吗?
Should I resolve all my dependencies at the root level?
我正在构建一个我正在使用依赖注入的应用程序,因为我确实使用了很多依赖项,所以我无法理解我需要在哪里解决这些依赖项:
假设我正在编写一个相当复杂的控制台应用程序,并且该应用程序一起使用了 100 个接口,这些接口都已在 IoC 容器中注册。
这是否意味着我需要在根方法的构造函数中解析所有这 100 个接口(否则我将不再使用依赖注入)。
对此有什么看法或现代如何解决这个问题?
氪,
我不清楚你所说的 "resolve" 是什么意思。如果你的意思是,你是否需要实例化组合根中的所有对象,那么不需要。当您创建上层依赖项时,它们会被实例化。
如果你的意思是,你是否需要在组合根中注册所有的依赖项,那么是的。但是,根据您使用的框架,可以使用约定优于配置的方法来执行此操作,而无需明确指定每个依赖项。
如果 "root method" 是指任何给定 class 的构造函数,那么是的,您需要实例化 class 依赖的所有对象(以及这些对象依赖的任何对象on) 当你创建 class 时。
使用依赖注入时,创建对象应该是廉价的。如果你有昂贵的对象,那么你应该推迟昂贵部分的实例化,直到你实际使用它,通过某种惰性方法或工厂。
我正在构建一个我正在使用依赖注入的应用程序,因为我确实使用了很多依赖项,所以我无法理解我需要在哪里解决这些依赖项:
假设我正在编写一个相当复杂的控制台应用程序,并且该应用程序一起使用了 100 个接口,这些接口都已在 IoC 容器中注册。
这是否意味着我需要在根方法的构造函数中解析所有这 100 个接口(否则我将不再使用依赖注入)。
对此有什么看法或现代如何解决这个问题?
氪,
我不清楚你所说的 "resolve" 是什么意思。如果你的意思是,你是否需要实例化组合根中的所有对象,那么不需要。当您创建上层依赖项时,它们会被实例化。
如果你的意思是,你是否需要在组合根中注册所有的依赖项,那么是的。但是,根据您使用的框架,可以使用约定优于配置的方法来执行此操作,而无需明确指定每个依赖项。
如果 "root method" 是指任何给定 class 的构造函数,那么是的,您需要实例化 class 依赖的所有对象(以及这些对象依赖的任何对象on) 当你创建 class 时。
使用依赖注入时,创建对象应该是廉价的。如果你有昂贵的对象,那么你应该推迟昂贵部分的实例化,直到你实际使用它,通过某种惰性方法或工厂。