1

我与依赖注入在一个项目中使用简单的喷油器工作,并能正常工作,直到我需要定义一个生活方式解决特定版本的依赖时,3.0.0(我用的这个版本,因为我我正在使用visual studio 2010)。如何在Simple Injector 3.0.0版中定义DefaultScopedLifestyle?

在官方文档,它说,我可以用这行代码中定义的依赖的生活方式:

container.Register<IService, RealService>(Lifestyle.Scoped); 

但是,当我验证它,它告诉我,我应该定义DefaultScopeLifestyle,使用这个(或变化):

container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle(); 

但在这个版本中,我找不到AsyncScopedLifestyle类或它的变化。

我该如何设置DefaultScopeLifestyle,或直接在依赖项中设置?

回答

2

的V3相当于AsyncScopedLifestyleExecutionContextScope

container.Options.DefaultScopedLifesyle = new ExecutionContextScope(); 

这种生活方式位于SimpleInjector.Extensions.ExecutionContextScoping nuget package

该软件包要求您运行.NET 4.5或更高版本。

如果您使用的是.NET 4.0,您将不得不使用LifetimeScopeLifestyle/ThreadScopedLifestyle并同步运行您的操作,或者在您构建Web应用程序的情况下使用WebRequestLifestyle。

你可以找到更多关于LifetimeScope here和关于ThreadScopedLifestyle here的信息。

+0

要使用'new ExecutionContextScope()'我必须从nuget下载SimpleInjector.Extensions.ExecutionContextScoping包吗?但我得到这个错误: 无法安装包'SimpleInjector.Extensions.ExecutionContextScoping 3.0.0'。您正在尝试将此软件包安装到以'.NETFramework,Version = v4.0'为目标的项目中,但软件包d不包含任何与该框架兼容的程序集引用或内容文件。 – William

+0

这些是否直接等价? – Liam

+0

我读过它,它真的说这是一个扩展,它在nuget包中可用。所以我试图安装它,并得到这个错误。我也试着用新的ExecutionContextScope()来执行这一行,但它找不到这个类。 – William

相关问题