我们正在使用 StructureMap 并试图弄清楚如何实现以下目标。
我们有 2 个接口:ICat、IDog
对于 ICat,我们需要使用 Cat 的实例。Cat 构造函数采用 ISound 的一个实例。
对于 IDog,我们需要使用 Dog 的实例。Dog 构造函数还采用 ISound 的一个实例。
ISound 有一个实现 AnimalSound。
到目前为止,一切都很好。这部分我们可以很容易地在结构图中完成。
现在,AnimalSound 出现了问题。AnimalSound 有一个可以用 LoudSound 或 SoftSound 初始化的构造函数。(LoudSound 和 SoftSound 共享同一个接口 IVolume)
我们希望所有 Cats 都被赋予一个由 SoftSound 构建的 AnimalSound,并且所有 Dogs 被赋予一个由 LoudSound 构建的 AnimalSound。
除了将设计更改为使用工厂之外,有没有办法在 StructureMap 中进行装饰性配置(我们使用的是 2.6.4.1)