13

アプリ全体で使用できるように HttpClient オブジェクトのインスタンスを Unity コンテナーに登録しようとしていますが、「タイプ HttpMessageHandler にはアクセス可能なコンストラクターがありません」というエラーが発生します。

HttpClient を Unity に登録するために使用するコードは次のとおりです。

private static IUnityContainer BuildUnityContainer()
    {
        var container = new UnityContainer();

        container.RegisterType<HttpClient>(
            new InjectionProperty("BaseAddress", new Uri(ConfigurationManager.AppSettings["ApiUrl"]))); 

        return container;
    }
4

2 に答える 2

11

代わりに factory メソッドを使用して登録できます。

container.RegisterType<HttpClient>(
    new InjectionFactory(x => 
        new HttpClient { BaseAddress = new Uri(ConfigurationManager.AppSettings["ApiUrl"]) }
    )
); 
于 2013-02-05T08:30:42.420 に答える
9

デフォルトでは、Unity はパラメーターが最も多いコンストラクターを使用します。HttpClient(HttpMessageHandler, Boolean)それはあなたの場合でしょう。パラメータなしのデフォルト ctor を明示的に指定する必要があります。

container.RegisterType<HttpClient>(new InjectionProperty(...), new InjectionConstructor());
于 2013-02-05T08:14:33.760 に答える