2012-05-11 2 views
0

以下のwindsorステートメントがあり、それを構造マップステートメントに変換しようとしています。私は本当にどのようにそれを行うための任意の提案を見つけることができません。ウィンザーからストラクチャーマップへのリファクタリング

Container.Register(AllTypes.FromThisAssembly(). 
    BasedOn<IType>().If(MatchStatement).Configure(c => c.LifeStyle.Transient. 
    Named(c.Implementation.Name))); 

これはどのように構造マップで記述されていますか?

EDIT:ウィンザーキャッスルで書かれた上記のステートメント(ほとんどの場合)を持っていますが、代わりにStructuremapを使用するため、Structuremapを使用する必要があります。私はそれだけではなく、すべてを持っている。

 Registry.Scan(x => 
          { 
           x.TheCallingAssembly(); 
           x.AddAllTypesOf<IType>(); 
           //{What more?} 
          }); 

私がさらに必要とするのは、MatchStatement条件を満たし、指定されたインスタンスを返すことです。

+0

達成しようとしていることを説明できますか?一時ライフサイクルを使用して、特定の名前でITypeのすべてのインプリケーションを登録して接続しますか? – Rookian

+0

はい、正しいです。 MatchStatement(bool式)の条件を満たす必要があります。これはWindsorからStructuremapに移行しているためです。最も厄介なのは条件部分です。 – Per

+0

条件は何をしますか?それはブールですか? – Rookian

答えて

0

StructureMapのデフォルトのライフサイクルは、PerGraph(一時的なものとシングルトンの組み合わせ)です。

次のコードは、呼び出し元のアセンブリをスキャンし、すべての実装のITypeを追加し、各実装が実装の名前で登録されています。

Scan(scan => 
{ 
    scan.TheCallingAssembly(); 
    scan.AddAllTypesOf<IType>().NameBy(type => type.Name);  
}); 
関連する問題