0

そこで、ASP.NETWebAPIプロジェクトの依存性注入を設定したいと思います。Microsoftは、バージョン3以降、MVCでのDIの設定方法を変更したようです。次に、次のように電話をかける必要があります。

GlobalConfiguration.Configuration.ServiceResolver.SetResolver(DependencyResolver);

SetResolver()オブジェクトを受け入れます。どんな種類のオブジェクト?

アプリケーションを実行すると、に渡されたパラメータがをSetResolver()実装する必要があることを示すエラーが表示されMicrosoft.Practices.ServiceLocation.IServiceLocatorます。確かに、私はそれを行うことができました。難しいことではないと思います。

IServiceLocatorしかし、血なまぐさいものが定義されているdllがないため、実装するクラスを作成できません。おそらく、ASP.NETWebAPIをインストールするときに含まれていません。では、いったいどうやってプロジェクトにDI用のカスタムコンテナを使用させるのでしょうか?

4

1 に答える 1

2

これはベータ版ですが、変更される予定です (こちらを参照):

DI は、依存関係リゾルバー (技術的にはサービス ロケーター) を HttpConfiguration オブジェクトに設定することに基づいています。このオブジェクトは、GlobalConfiguration オブジェクトに静的プロパティ (Web ホスティング) として存在するか、または HttpSelfHostConfiguration での自己ホスティングの場合です。

したがって、Web ホスティングの場合は、次を使用します。

GlobalConfiguration.Configuration.ServiceResolver.SetResolver(myResolver);

依存関係リゾルバーの登録に関しては、基本的に 3 つのオプションがあります。

  1. IDependencyResolver次の2 つのメソッドを持つ依存関係を実装するオブジェクトのインスタンス:GetServiceGetServices
  2. GetInstanceとの 2 つのパブリック メソッドを持つオブジェクトのインスタンスGetAllInstances。インターフェイスは不要で、Web API はリフレクションを使用してメソッドを呼び出します。
  3. 特定の型のインスタンスを返す 2 つのデリゲートを渡す

編集

IDependencyResolverの Web API ( MVC ではない) は名前空間System.Web.Http.dllにあります。System.Web.Http.Services

于 2012-05-02T10:27:07.193 に答える