キュー内のオブジェクトのタイプに応じて異なる依存関係グラフを挿入する必要があるキュー サービスがあります。を使用してStructure Mapいます。
したがって、キュー内のオブジェクトが の場合はTypeAの具象クラスTypeAが使用され、 の場合TypeBは の具象クラスTypeBが使用されます。
次のようなキュー内のコードを避けたい:
if (typeA)
{
// setup TypeA graph
}
else if (typeB) {
// setup TypeB graph
}
グラフ内には、IReader(ISomething, ISpomethingElse)whereなどのジェネリック クラスもありますが、ジェネリックIReaderですが、正しい型ISomethingとISomethingElsefor 型を挿入する必要があります。 ISomething依存関係などもあります。
現在、TypeAまたはTypeBオブジェクトを作成し、StructureMap を使用してジェネリック Processor クラスを挿入してから、次のようなメソッドにfactory手動でTypeAまたはTypeBファクトリを挿入します。
Processor.Process(new TypeAFactory) // perhaps I should have an abstract factory...
ただし、ファクトリはIReader上記のジェネリックを作成するため、そこからすべての TypeA またはTypeBクラスを手動で注入することになります。
これで十分だと思います。
私は初めてStructureMapで、柔軟でエレガントなソリューションのために、誰かがここで正しい方向に向けてくれることを望んでいました.
ありがとう