首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在解析类型时更改已配置的生存期管理器?

是否可以在解析类型时更改已配置的生存期管理器?
EN

Stack Overflow用户
提问于 2011-02-08 21:16:03
回答 2查看 1.2K关注 0票数 2

我将Unity配置为能够使用我自己的生命周期管理器解析几种类型(每个http请求)。现在,在一个特殊的初始化方法中,我需要获取解析类型结构的新实例,我不希望这些实例被存储并在后续的Resolve调用中重用。对于这个特殊的方法,我需要瞬态生命周期管理器。

我希望避免第二个容器配置,因为它将是具有不同生命周期管理器的第一个容器的副本。是否有可能在解析类型时以某种方式覆盖生命周期管理器配置?

这个问题与我的previous question有关,因为我正在寻找更好的方法来做到这一点。

编辑:

我知道我可以创建多个命名注册,但仅仅因为更改生命周期管理器,就需要重新创建大部分配置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-08 21:32:22

我认为--正如你已经注意到的--我们可以使用两个不同的注册和两个不同的生命周期配置。但您似乎对此设置不满意,并且希望在注册时通过整个生命周期。

我的建议是创建一个扩展方法,它需要一个额外的生命周期,并检查容器是否有这样的注册,如果它不存在,它会注册它并返回所需的设置。

但老实说,我确实对这种方法有问题,即使框架中存在这样的方法。IoC容器移除了依赖项的知识,但是您正在将这些知识添加回客户端/依赖项,这违反了的IoC原则。

票数 1
EN

Stack Overflow用户

发布于 2011-02-09 14:22:34

您可以使用子容器进行特殊解析。只需在子容器中为您关心的类型注册一个新的生命周期管理器(TransientLifetimeManager听起来像您想要的)。它将从家长那里获取其他所有注册,所以您不需要重做大量的注册。

但我同意Aliostad的观点--这个设计看起来不太对劲,但如果没有更多关于你在做什么的细节,我真的不能给出一个替代方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4933481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档