In ASP.NET MVC 5 is possible to obtain some dependency through DependencyResolver.Current.GetService. Is there something similar in ASP.NET Core?
If you really need it, you can write own one. First - create AppDependencyResolver class.
public class AppDependencyResolver
{
private static AppDependencyResolver _resolver;
public static AppDependencyResolver Current
{
get
{
if (_resolver == null)
throw new Exception("AppDependencyResolver not initialized. You should initialize it in Startup class");
return _resolver;
}
}
public static void Init(IServiceProvider services)
{
_resolver = new AppDependencyResolver(services);
}
private readonly IServiceProvider _serviceProvider;
public object GetService(Type serviceType)
{
return _serviceProvider.GetService(serviceType);
}
public T GetService()
{
return _serviceProvider.GetService();
}
private AppDependencyResolver(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
}
Please note that _serviceProvider.GetService only available if you add using Microsoft.Extensions.DependencyInjection;. That namespace will be available if you add "Microsoft.Extensions.DependencyInjection": "1.0.0" to your project.json.
Than you should call Init method in your startup class. For example
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
AppDependencyResolver.Init(app.ApplicationServices);
//all other code
After that you can use it anywhere, same as DependencyResolver.Current. But my suggestion - use it only if no other choice left.