2011-01-18 8 views
2

CastleWysorに登録されているサービスを検索するSystem.Web.Mvc.IDependencyResolverを実装しました。私のGetService(型serviceType)の実装は以下の通りです(MVC3 RC2用)。これはMVC IDependencyResolverの予想される動作ですか?

public object GetService(Type serviceType) 
{ 
    object service = null; 
    try 
    { 
     service = _container.Resolve(serviceType); 
    } 
    catch(Exception ex) 
    { 
     Logger.Warn("Could not resolve service-type {0} via {1}", 
      serviceType.Name, _resolverName); 
    } 

    return service; 
} 

これはうまく動作しますが、私は、私は私のログに表示さ警告に関する質問(「警告する」として、私はすべての例外をログに記録 - 上記のコードを参照)している:これらは

WARN Default [] - Could not resolve service-type Index_cshtml via 
    WindsorDependencyResolver 
WARN Default [] - Could not resolve service-type RegistrationForm_cshtml via 
    WindsorDependencyResolver 
WARN Default [] - Could not resolve service-type LoginForm_cshtml via 
    WindsorDependencyResolver 

をしていますビュー。これは予想される動作ですか?もしそうなら、なぜ依存関係リゾルバはビューを探すよう求められますか?そうでない場合は、これを解決するために何をすべきですか?

私はIViewPageActivatorのインスタンスを登録していないことに注意してください(以下の警告を参照してください)。ビューはデフォルトの方法で解決されなければならないことをフレームワークに通知する必要があります。なぜ私は依然として依存関係リゾルバを通してビューに対するリクエストを見ることができますか?

答えて

2

MVC3のIDependencyResolverは、ビューと他のタイプを解決できます。これは、ソリューションのユニットテスト時などにビューの実装を変更する必要がある場合に非常に便利です。 詳細:http://bradwilson.typepad.com/blog/2010/10/service-location-pt11-view-page-activator.html:BuildManagerCompiledView で

ロジック GetSerivce(typeof演算(IViewPageActivator)) を呼び出し、提供されるサービス 本を使用して、依存リゾルバを参照 。 IViewPageActivatorが 依存関係リゾルバに存在する場合、 GetService(viewPageType)を呼び出して、 依存関係リゾルバに 具象ビューページタイプを作成するよう依頼します。 依存リゾルバも 具体的なビュー・ページ・タイプを作成するために失敗した場合、我々は最終的に ビュー・ページ・タイプを作成するために Activator.CreateInstanceを使用してのMVC 2 行動にフォールバック 。

+1

こんにちは。はい、私はこれを知っています - 私は私のポストで言及しなかったことは、私はウィンザーとIViewPageActivatorを登録していないので、コールがこのタイプのために来るとき、私のDependencyResolverはnullを返します。ビューを解決するデフォルトの方法に戻ります。だからこそ私はなぜこのような視点を解決するための呼びかけがあるのか​​理解できません。 –

+0

注意:依存関係リゾルバにIViewPageActivatorが存在しない場合、GetService(viewPageType) –

+0

を呼び出すことによって、依存関係リゾルバに具体的なビューページタイプを作成するよう依頼します。私の卑劣な人。 OK - 動作が期待されます。今、特別なIViewPageActivatorは必要ありません。私はデフォルトの動作に満足しています。私は物事をそのまま残すべきですか(未解決の意見を無視し続けますか?)、私は何か他のことをしなければなりませんか? –

関連する問題