2017-12-21 33 views
0

コンストラクタで使用されるクラスから継承するRegisteredTypeを使用してコンストラクタパラメータを解決するようにAutofacに指示する方法はありますか?Autofac RegisterTypeコンストラクタのパラメータ型から継承するコンストラクタを使用する場合

私はHttpClientをのコンストラクタにHttpClientHandlerを使用する必要があるが、私は同様にGetCookiesにアクセスするためにHttpClientHandlerを必要とする...私はHttpMessageHandlerとしてハンドラを登録した場合、それは適切にHttpClientを作成し、その後私はキャストする必要がありハックのように感じるHttpClientHandlerへのHttpMessageHander;それを行うより良い方法はありますか?

builder.RegisterType<HttpClientHandler>().As<HttpMessageHandler>().SingleInstance(); 

builder.RegisterType<HttpClient>().UsingConstructor(typeof(HttpMessageHandler)).SingleInstance(); 

答えて

1

私は完全なテストを書いていませんが、あなたはあなたのHttpClientHandler登録にAsSelf()を挿入できると思います。私は解決していたときに

builder.RegisterType<HttpClientHandler>() 
     .As<HttpMessageHandler>() 
     .AsSelf() 
     .SingleInstance(); 

だから、これらは問題なく戻ってくる: VARコンテナ= builder.Build();

 var handler = container.Resolve<HttpClientHandler>(); 
     var client = container.Resolve<HttpClient>(); 
関連する問題