1.カスタムコンテナは、組み合わせの注射によって得ることが意図Iprovider
1 パブリック クラスAppDependencyResolver 2 { 3 プライベート 静的AppDependencyResolver _resolver。 4 5 パブリック 静的AppDependencyResolver現在 6 { 7 GET 8 { 9 であれば(_resolver == nullの) 10 スロー 新しい例外(" 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(サービス種別)。 25 } 26 27 公衆 TのgetService <T> () 28 { 29 リターン _serviceProvider.GetService <T> (); 30 } 31 32 プライベートAppDependencyResolver(IServiceProviderサービスプロバイダ) 33 { 34 _serviceProvider = サービス・プロバイダ。 35 } 36 }
プロバイダがautofacある2.startup初期化コンテナ、
1 AppDependencyResolver.Init(プロバイダ)。
3.コール
1 プライベート ILoggerです<CustomAutofacAop> _logger。 2 公共CustomAutofacAop() 3 { 4 _logger = AppDependencyResolver.Current.GetService <ILoggerです<CustomAutofacAop >> (); 5 6 }