Simple Injector是否放弃了对CommonServiceLocator的支持?

时间:2015-10-28 22:21:47

标签: simple-injector

我正在读这个问题:

SetResolver in console application using Simple Injector

在其中,我看到了这句话:

  

我修复了这个并将CommonServiceLocator适配器的v2.8.2推送到   的NuGet。但请注意,我们正在放弃对v3中CSL适配器的支持   简单注射器,因为它导致不良做法。别用它;您   不需要它。

这是什么意思?

这是否意味着此代码将不再有效?

// configuration
var container = new Container();
InitializeContainer(container);
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);

// access
var container = GlobalConfiguration.Configuration.DependencyResolver;
var myObject = container.GetService(typeof(MyObject)) as MyObject;

如果是这样,我是否可以注册此访问 的投票?我们经常不使用服务定位器模式,但我们有一些关键的功能,我们根本就没有其他选择。如果我们不能使用DependencyResolver,我们就会被迫使用静态变量。

1 个答案:

答案 0 :(得分:2)

  

这是什么意思?

这意味着从v3 and beyond我们将不支持Common Service Locator项目的NuGet包。而已。而已;没什么。

因此,这意味着如果您想使用公共服务定位器项目,您可以尝试使用CommonServiceLocator.SimpleInjector NuGet package for v2.x,但不能保证在新版本的v3及更高版本中继续使用。所以write your own adapter可能更明智。

这并不意味着我们放弃了对Web API,MVC以及使用某种IDependencyResolver适配器的所有其他框架的支持。有可用的集成包,它们仍然受支持。所以代码示例herehere仍然正确,您的代码示例应该可以正常工作。