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