其他分享
首页 > 其他分享> > CodeGo.net>如何在Simple Injector版本3.0.0中定义DefaultScopedLifestyle?

CodeGo.net>如何在Simple Injector版本3.0.0中定义DefaultScopedLifestyle?

作者:互联网

我正在使用简单注入器的项目中进行依赖项注入,并且可以正常工作,直到在该特定版本3.0.0中解决依赖项时需要定义生活方式(我正在使用此版本,因为我正在使用Visual Studio 2010) .

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

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

但是当我验证它时,它告诉我应该使用this(或变体)定义DefaultScopeLifestyle:

container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();

但是在此版本中,我找不到AsyncScopedLifestyle类或其变体.

如何设置DefaultScopeLifestyle或直接在依赖项中设置它?

解决方法:

v3的AsyncScopedLifestyle等效为ExecutionContextScopeLifestyle

container.Options.DefaultScopedLifesyle = new ExecutionContextScopeLifestyle();

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

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

如果使用的是.NET 4.0,则必须使用LifetimeScopeLifestyle / ThreadScopedLifestyle并同步运行操作,或者在构建Web应用程序时使用WebRequestLifestyle.

您可以找到有关LifetimeScope here和ThreadScopedLifestyle here的更多信息.

标签:dependency-injection,c,inversion-of-control,simple-injector
来源: https://codeday.me/bug/20191025/1930787.html