1. пользовательские контейнеры, предназначенные для получения с помощью комбинации инъекции Iprovider
1 общественный класс AppDependencyResolver 2 { 3 частные статические AppDependencyResolver _resolver; 4 5 публичных статический AppDependencyResolver ток 6 { 7 прибудет 8 { 9 , если (_resolver == NULL ) 10 бросок нового Exception ( " AppDependencyResolver не инициализирован Вы должны инициализировать его в классе запуска. " ); 11 возвращение _resolver; 12 } 13 } 14 15 общественные статические недействительные (услуги) IServiceProvider Иниц 16 { 17 _resolver = новый AppDependencyResolver (услуги); 18 } 19 20 частная только для чтения IServiceProvider _serviceProvider; 21 22 общественного объекта GetService (тип ServiceType) 23 { 24 возврата _serviceProvider.GetService (ServiceType); 25 } 26 27 общественных Т GetService <T> () 28 { 29 возврата _serviceProvider.GetService <T> (); 30 } 31 32 Частный AppDependencyResolver (IServiceProvider поставщик услуг) 33 { 34 _serviceProvider = поставщик услуг; 35 } 36 }
2.startup инициализации контейнера, в котором провайдер autofac
1 AppDependencyResolver.Init (поставщик);
3. Вызов
1 частный ILogger <CustomAutofacAop> _logger; 2 общественных CustomAutofacAop () 3 { 4 _logger = AppDependencyResolver.Current.GetService <ILogger <CustomAutofacAop >> (); 5 6 }