【发布时间】:2011-10-12 07:43:03
【问题描述】:
structuremap 是否允许您以惰性方式进行构造函数注入? 意思是在使用之前不创建注入的对象?
【问题讨论】:
-
为什么一个对象会有一个没有被使用的依赖?
-
好问题,有效点。如果不是所有的类方法都使用注入的对象。有些类可以注入多个对象,但并非每个方法都使用每个对象。也许那是我想的气味?
-
我认为一个不使用依赖的类很可能违反了单一职责原则。我不知道你的班级在做什么,所以我不能判断,但它可能是它试图做两件事的情况,可能是时候将它们分成不同的班级了。话虽如此,如果它是一次性的,它可能不会受到伤害,对象的创建成本很低,所以我怀疑目前性能是一个很大的问题。
-
我不得不在至少一个方面不同意 Phill 关于违反 SRP 的观点。逻辑已分解为多个类,这就是它们被注入的原因。想象一下,您有多个依赖项,并非所有依赖项都立即需要,其中一些可能根本不会被调用。构建这些依赖项将是一种浪费,因此将其推迟到实际调用通过对我来说似乎是一个完全有效的决定。
-
我认为你的声明是有效的梅尔。我不希望我的调用程序集必须知道太多,或者进行一系列“智能”调用,比如从 UI 层到 biz 层。商业层中封装的一些决策更多地根据最终用户的行为进行分组,并且成功执行该行为所需的规则和步骤可能具有 UI 不必担心的几个依赖项。
标签: c# .net dependency-injection dependencies structuremap