StructureMap を使用しており、次のことを達成する方法を見つけようとしています。
2 つのインターフェイスがあります: ICat、IDog
ICat の場合、Cat のインスタンスを使用する必要があります。Cat コンストラクターは、ISound のインスタンスを取ります。
IDog の場合は、Dog のインスタンスを使用する必要があります。Dog コンストラクターは、ISound のインスタンスも受け取ります。
ISound には、1 つの実装 AnimalSound があります。
ここまでは順調ですね。この部分は、構造マップで非常に簡単に実行できます。
この問題は、AnimalSound で発生します。AnimalSound には、LoudSound または SoftSound で初期化できるコンストラクタがあります。(LoudSound と SoftSound は同じインターフェース IVolume を共有します)
すべての Cat には、SoftSound で構築された AnimalSound が与えられ、すべての Dog には、LoudSound で構築された AnimalSound が構築される必要があります。
Factory を使用するようにデザインを変更する以外に、StructureMap でこれを装飾的に構成する方法はありますか (2.6.4.1 を使用しています)。