If you really need it, you can write your own. First create an 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<T>() { return _serviceProvider.GetService<T>(); } private AppDependencyResolver(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } }
Note that _serviceProvider.GetService<T>(); Available only when added using Microsoft.Extensions.DependencyInjection; . This namespace will be available if you add "Microsoft.Extensions.DependencyInjection": "1.0.0" to your project.json . Then you must call the Init method in your startup class. for instance
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { AppDependencyResolver.Init(app.ApplicationServices);
After that, you can use it anywhere, just like DependencyResolver.Current . But my suggestion is to use it only if there is no other choice.
source share