首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StructureMap LifeCycle of UnRegistered Types

StructureMap LifeCycle of UnRegistered Types
EN

Stack Overflow用户
提问于 2012-08-31 14:27:16
回答 1查看 242关注 0票数 0

在structuremap中,你可以控制你注册的对象的lifeCycle,通常是一些具体类型的接口,如下所示:

代码语言:javascript
复制
x.For<IMyInterface>().Transient().Use<MyObject>();

这样我就可以控制生命周期了。但是,在解析未注册的对象(具体)类型时,生命周期缺省为似乎是瞬态的()。

这显然是structuremap的一个方便的特性,因为我肯定不想注册每个具体的类型。

然而,有没有一种方法可以在不注册的情况下覆盖这个生命周期?

此外,如果您可以将对象的生命周期指定为覆盖,那就太好了,就像这样:

代码语言:javascript
复制
ObjectFactory.With<SomeUnregisteredConcreteObject>().LifeCycleIs(...)

在这种情况下,生命周期将针对GetInstance的下一次解析进行修改

你知道这是怎么做的吗?

EN

回答 1

Stack Overflow用户

发布于 2012-09-03 21:47:22

您可以创建一个子容器并注册组件:

代码语言:javascript
复制
var child = ObjectFactory.Container.CreateChildContainer();
child.Configure(config => config.For<SomeUnregisteredConcreteType>().Singleton());
var @object = child.GetInstance<...>();

我认为你不想注册的原因是因为你不想注册。我认为这解决了这个问题。

我也不知道有没有内置的方式来指定默认的生命周期。但是,我认为使用IAutoMocker接口可能是可行的。您可能可以浏览一下that whole folder中的代码,以了解如何执行此操作。AutoMocking挂接到容器中,以便请求一个未注册的组件,它调用IAutoMocker并给它一个注册组件的机会。我想您可以使用IAutoMocker来注册具有不同默认生命周期的组件。

如果你成功地做到了这一点,我希望你发送一个拉请求或写一篇博客文章与我们分享。

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

https://stackoverflow.com/questions/12209961

复制
相关文章

相似问题

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