क्या सरल इंजेक्टर आईओसी एमवीसी 4 एएसपी.नेट वेब एपीआई का समर्थन करता है?
वर्तमान में यह एमवीसी 4 वेब एपीआई के लिए कोई समर्थन नहीं है, लेकिन भविष्य में समर्थन जोड़ा जाएगा। ऐसा होने पर The integration guide अपडेट किया जाएगा।
अद्यतन: Web API support सरल इंजेक्टर 2.5 में जोड़ा गया है।
इस दौरान, आप सरल इंजेक्टर के लिए अपने स्वयं के System.Web.Http.Dependencies.IDependencyResolver
कार्यान्वयन बना सकते हैं। जब से तुम (जहां एक अनुरोध खत्म हो सकता है एक वेब की मेजबानी पर्यावरण अंदर scoping लागू करने के लिए Per Web Api Request जीवन भर का उपयोग करने की जरूरत है,
public class SimpleInjectorHttpDependencyResolver :
System.Web.Http.Dependencies.IDependencyResolver
{
private readonly Container container;
public SimpleInjectorHttpDependencyResolver(
Container container)
{
this.container = container;
}
public System.Web.Http.Dependencies.IDependencyScope
BeginScope()
{
return this;
}
public object GetService(Type serviceType)
{
IServiceProvider provider = this.container;
return provider.GetService(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
IServiceProvider provider = this.container;
Type collectionType = typeof(IEnumerable<>).MakeGenericType(serviceType);
var services =(IEnumerable<object>)this.ServiceProvider.GetService(collectionType);
return services ?? Enumerable.Empty<object>();
}
public void Dispose()
{
}
}
इस कार्यान्वयन कोई scoping लागू करता है: नीचे एक आईआईएस की मेजबानी वातावरण में वेब एपीआई के साथ काम करने के लिए कार्यान्वयन है जहां से शुरू हुआ उससे अलग धागे पर)।
Because of the way Web API is designed, सभी वेब एपीआई नियंत्रकों को स्पष्ट रूप से पंजीकृत करना बहुत महत्वपूर्ण है। आप नीचे दिए गए कोड का उपयोग कर ऐसा कर सकते हैं:
var services = GlobalConfiguration.Configuration.Services;
var controllerTypes = services.GetHttpControllerTypeResolver()
.GetControllerTypes(services.GetAssembliesResolver());
foreach (var controllerType in controllerTypes)
{
container.Register(controllerType);
}
आप SimpleInjectorHttpDependencyResolver
इस प्रकार के रूप में रजिस्टर कर सकते हैं:
// NOTE: Do this as last step, after registering the controllers.
GlobalConfiguration.Configuration.DependencyResolver =
new SimpleInjectorHttpDependencyResolver(container);
सरल इंजेक्टर 2.5 में एक [वेब एपीआई एकीकरण पैकेज] (https://simpleinjector.codeplex.com/wikipage?title=Web%20API%20 इंटीग्रेशन) शामिल है। – Steven