使用StructureMap定制具有到期时间的Singleton LifeCycle

时间:2014-06-12 20:38:11

标签: structuremap

我们可以使用StructureMap创建一个自定义LifeCycle,其中对象必须在Singleton范围内指定preiod of time,之后必须再次创建对象。简而言之,我们可以每20或30分钟创建一次物体。

1 个答案:

答案 0 :(得分:0)

当然,请参阅例如http://www.mikeobrien.net/blog/creating-structuremap-lifecycle-for-wcf/有关如何实现ILifecycle的示例(在这种情况下由WCF支持,但您也可以将其设置为线程本地或静态)。在x分钟过去之后,您只需添加逻辑以返回新的IObjectCache实例。

在那里复制/粘贴代码:

public class WcfOperationLifecycle : ILifecycle
{
    public static readonly string ITEM_NAME = "STRUCTUREMAP-INSTANCES";

    public void EjectAll()
    {
        FindCache().DisposeAndClear();
    }

    public IObjectCache FindCache()
    {
        if (!OperationContext.Current.OutgoingMessageProperties.ContainsKey(ITEM_NAME))
            OperationContext.Current.OutgoingMessageProperties.Add(ITEM_NAME, new MainObjectCache());
        return (IObjectCache)OperationContext.Current.OutgoingMessageProperties[ITEM_NAME]; 
    }

    public string Scope { get { return "WcfOperationLifecycle"; } }
}