2009-05-17 15 views
6

城ウィンザーで自動登録を使用して、私はピック()メソッドが何をするかを把握することはできませんも私はどのドキュメントを見つけることができます人々が私の人生のためにCastle Windsor Fluent Registration - Pick()は何をしますか?

_container.Register(
    AllTypes.Pick().FromAssembly(Assembly.GetExecutingAssembly()) 
    .WithService.FirstInterface()); 

のようなものをやってご覧ください。誰も私にそれを説明することはできますか?

答えて

9

Pick(IEnumerable<Type>)is a synonym forFrom(IEnumerable<Type>)であり、指定されたタイプを登録対象として選択する。

AllTypes.Pick()is the same asAllTypes.Of<object>()です。したがって、効果的にすべてのタイプを選択します。

AllTypes.Pick().FromAssembly(Assembly.GetExecutingAssembly())は、(あなたがして、もちろん、フィルタリングすることができます)いつものように

実行アセンブリのすべての型を選択する詳細については、fluent API wikiおよび/または​​を見てみましょう。

+1

Mausch - 流暢なインターフェースに関するキャッスルのドキュメントに貢献したことはありますか?これはあなたが答えたような最初の質問ではありません。 –

+0

私は試してみます –

2

これは、この流暢なAPIの中で、どのタイプがコンテナに自動的に登録されるかを選ぶための出発点の一種です。この例では

Container.Register(
     AllTypes.Pick() 
     .FromAssemblyNamed("MyAssembly") 
     .If(t => t.Name.EndsWith("ABC")) 
     .Configure(c => c.LifeStyle.Is(LifestyleType.Transient)) 
     .WithService.Select(i => typeof(I)) 
    ); 

タイプが「ABC」で終わる名前でMyAssemblyから選んだすべての例では、this questionから来ているI型のサービスとして、一時的なライフスタイルをコンテナに追加されます。

これは内部DSL形式の宣言的なアプローチです。この種のAPIでは、後で実行される動作をソートするためのメソッドが使用されます。これを実現するには、実際の作業が最後に行われている間に、メソッドは構成のステップをガイドするBuilderを返します。

+0

上記の例では、AllTypes.Pick()。FromAssemblyNamed(...)を使用する代わりに、そのように見える問題があります。 AllTypes.FromAssemblyNamed(...)。ここで(..) –

関連する問題