我正在读这个问题:
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,我们就会被迫使用静态变量。
答案 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
适配器的所有其他框架的支持。有可用的集成包,它们仍然受支持。所以代码示例here和here仍然正确,您的代码示例应该可以正常工作。