1

ASP.Net MVC 4 RTM Web API を使用しています。カスタム モデル バインディングを介して入力したいパラメーターを持つコントローラー アクションがあります。System.Web.Http.Controllers.HttpParameterBindingこれを実現するために、このパラメーターの値を設定するクラスから派生するクラスを作成しました。System.Web.Http.ParameterBindingAttribute次に、コントローラー アクションのパラメーターを装飾するために使用する派生属性クラスを作成しました。

これはすべてうまく機能しています。私のHttpParameterBindingクラスはアクションパラメーターを正しく設定しています。私が抱えている問題は、カスタム パラメーター バインディング クラスに、IoC コンテナー (Unity) を介して解決したい依存関係があることです。HttpParameterBindingUnity からカスタム バインディング クラスの依存関係を構築できるように、Web API がインスタンスを作成する方法をオーバーライドする方法はありますか? Unity のメソッドを使用して依存関係を設定するカスタム フィルター プロバイダーを作成することで、フィルター属性に対して同様のことを行うことができましたがBuildUp、Web API のHttpParameterBindings.

4

2 に答える 2

0

一般に、Web API で IoC / Unity を使用するには、個別にセットアップする必要があります。

Nuget パッケージ Unity.WebApi をダウンロードしてみて、それが役立つかどうかを確認してください!

于 2012-09-11T07:11:35.183 に答える
0

この記事をご覧ください: WebAPI でのパラメーター バインディング

コンバーターからバインダー、バインダープロバイダーまで、いくつかの異なるオプションについて説明します。ModelBinderProvider依存関係を提供する方法を知っているカスタムを書くことができるように思えます。それがチェーン内で十分に高くない場合は、デフォルトのIActionValueBinderサービスを置き換えることを検討できます。これはDefaultActionValueBinder、拡張または単純に再実装できるインスタンスです。

また、WebAPI のソース コードをダウンロードすることを強くお勧めします。これは、私がこれらの問題に遭遇したときに非常に役に立ちました。WebAPI のソース コードは次のとおりです。簡単にナビゲートできるように VS で開くことができるように、ダウンロードすることをお勧めします。

FlitBitもお気軽にチェックしてください(非常にモジュール化されているため、パッケージの数に驚かないでください)。FlitBit、特に FlitBit.IoC と FlitBit.Dto をサポートするための WebAPI パッケージに取り組んでいます。IoCの問題が解決したら、更新を追加します。これはあなたのものと非常に似ているためです。

于 2013-09-04T21:53:55.700 に答える