1. custom containers, intended to obtain by combination injection Iprovider
1 public class AppDependencyResolver 2 { 3 private static AppDependencyResolver _resolver; 4 5 public static AppDependencyResolver Current 6 { 7 get 8 { 9 if (_resolver == null) 10 throw new Exception("AppDependencyResolver not initialized. You should initialize it in Startup class"); 11 return _resolver; 12 } 13 } 14 15 public static void Init(IServiceProvider services) 16 { 17 _resolver = new AppDependencyResolver(services); 18 } 19 20 private readonly IServiceProvider _serviceProvider; 21 22 public object GetService(Type serviceType) 23 { 24 return _serviceProvider.GetService(serviceType); 25 } 26 27 public T GetService<T>() 28 { 29 return _serviceProvider.GetService <T> (); 30 } 31 32 private AppDependencyResolver (IServiceProvider service provider) 33 { 34 _serviceProvider = service provider; 35 } 36 }
2.startup initialization container, where the provider is autofac
1 AppDependencyResolver.Init(provider);
3. Call
1 private ILogger<CustomAutofacAop> _logger; 2 public CustomAutofacAop() 3 { 4 _logger = AppDependencyResolver.Current.GetService<ILogger<CustomAutofacAop>>(); 5 6 }