StructureMap - 检查是否已创建某个类/接口的实例

时间:2012-01-16 10:29:02

标签: inversion-of-control structuremap

我需要检查某个接口的实例是否已由structuremap创建。我已经尝试过ObjectFactory.GetInstance()但是这会在调用时创建一个新的T实例,并且T的具体实例不存在。我只是想检查是否已经创建了一个T实例(而不是创建一个新实例)。我需要这个来强制通过某个类创建实例。

2 个答案:

答案 0 :(得分:4)

您应该可以使用以下方式执行此操作:

ObjectFactory.Model.InstancesOf<IYourInterface>().First().ObjectHasBeenCreated();

请注意,这仅适用于具有Singleton,HttpContext或Hybrid生命周期的实例。

答案 1 :(得分:1)

如果它已经创建了一个接口实例,则不能询问StructureMap。

但是,它确实有许多生命周期管理功能,允许它控制是创建新实例,还是返回先前创建的缓存实例。

您可以告诉StructureMap创建一个实例HttpContextScoped,以便它为给定的HTTP请求返回相同的实例。

听起来你真正想知道的是如何使用StructureMap处理Web应用程序中的NHibernate会话。尝试: http://trason.net/journal/2009/10/7/bootstrapping-nhibernate-with-structuremap.html