gpt4 book ai didi

c# - ASP Net Core StructureMap HybridLifecycle 替换

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:07 25 4
gpt4 key购买 nike

我目前正在更新为 ASP.NET MVC 5 构建的库,以便与使用 StructureMap 进行 DI 的最新 asp net core 1.0 一起使用。但是,我注意到 StructureMap 中的混合生命周期现在已经过时,不再受支持。是否有此生命周期的替代品,或获得相同功能的方法?

For<SessionContext>()
.LifecycleIs<HybridLifecycle>()
.Use<SessionContext>();

最佳答案

我最终编写了自己的 asp net 生命周期类,以将旧混合生命周期的相同功能与新的 ASP .Net 核心相匹配。

public class AspNetCoreLifecycle : ILifecycle {

private readonly object mapLock = new object();

public string Description => "Asp Net Core Lifecycle object";

private readonly Container container;
private Dictionary<HttpContext, IObjectCache> contextMap = new Dictionary<HttpContext, IObjectCache>();

public AspNetCoreLifecycle(Container cont) {
this.container = cont;

}

public void EjectAll(ILifecycleContext context) {

lock (mapLock) {
foreach (var kvp in contextMap) {
kvp.Value.DisposeAndClear();
}

contextMap = new Dictionary<HttpContext, IObjectCache>();
}
}

public IObjectCache FindCache(ILifecycleContext context) {

var accessor = container.GetInstance<IHttpContextAccessor>();

lock (mapLock) {
if (!contextMap.ContainsKey(accessor.HttpContext)) {
contextMap.Add(accessor.HttpContext, new LifecycleObjectCache());
}

return contextMap[accessor.HttpContext];
}
}
}

关于c# - ASP Net Core StructureMap HybridLifecycle 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com