根据StructureMap's documentation,容器的默认行为是每次请求一个父容器并且嵌套容器解析同一个对象实例时,父容器会解析一个新的对象实例。
在99%的情况下,这很好 - 但我很想知道是否有一种方法可以设置嵌套容器的行为与父容器类似,并默认解析新的对象实例 - 无需依赖.AlwaysUnique()
方法。
这是可能的还是.AlwaysUnique
是逐个对象的唯一方法?
答案 0 :(得分:1)
我认为除了嵌套容器配置的明确规范之外,没有对它的支持,因为它是围绕为对象解析创建临时上下文而设计的。 SMRC中的IIRC HttpContextScoped 生命周期是使用嵌套容器实现的。
如果您想要灵活地从容器中解析现有对象或创建一个新对象,您可以实现工厂,通过注入上下文进入工厂或基于显式方法调用(factory.Create()
或factory.ReuseIfExistsOrCreate()
)。
希望这有帮助!