我只是在检查我的理智。这是我的代码,它使用simpleinjector 3.3.2
Container.RegisterPerWebRequest<HttpContextBase>(() =>
{
var context = HttpContext.Current;
if (context == null && Container.IsVerifying) return new FakeHttpContext();
return new HttpContextWrapper(context);
});
Container.Verify();
...
public class FakeHttpContext : HttpContextBase { }
然而,RegisterPerWebRequest现在已标记为已过时,我不能100%确定这是否是更改代码以反映新代码库的正确方法。
Container.Options.DefaultScopedLifestyle = new WebRequestLifestyle();
//So we can inject HttpContextBase into any class
Container.Register<HttpContextBase>( () =>
{
var context = HttpContext.Current;
if (context == null && Container.IsVerifying)
return new FakeHttpContext();
return new HttpContextWrapper(context);
}, Lifestyle.Scoped);
所以我的问题是&#34;我应该使用Lifestyle.Scoped
来替换RegisterPerWebRequest
吗?我仍然可以按原样使用代码吗?
答案 0 :(得分:4)
您显示的代码是正确的。 Container.Register<T>(Func<T>, Lifestyle.Scoped)
替换Container.RegisterPerWebRequest<T>(Func<T>)
。