gpt4 book ai didi

c# - 依赖需要根据StructureMap中请求的父类型进行不同的配置

转载 作者:行者123 更新时间:2023-11-30 12:47:55 26 4
gpt4 key购买 nike

我们正在使用 StructureMap 并试图弄清楚如何实现以下目标。

我们有两个接口(interface): ICat, IDog

对于 ICat,我们需要使用 Cat 的实例。 Cat 构造函数采用 ISound 的实例。

对于 IDog,我们需要使用 Dog 的实例。 Dog 构造函数还采用 ISound 的实例。

ISound 有一个实现 AnimalSound。

到目前为止一切顺利。这部分我们可以很容易地在结构图中完成。

问题现在出现在 AnimalSound 上。 AnimalSound 有一个可以用 LoudSound 或 SoftSound 初始化的构造函数。 (LoudSound和SoftSound共享同一个接口(interface)IVolume)

我们希望为所有猫提供一个使用 SoftSound 构建的 AnimalSound,并为所有狗提供一个使用 LoudSound 构建的 AnimalSound。

如果不更改设计以使用工厂,是否可以在 StructureMap 中进行装饰性配置(我们使用的是 2.6.4.1)

最佳答案

使用命名实例你可以做到这一点:

For<ISound>().Add<AnimalSound>().Ctor<IVolume>().Is<LoudSound>().Named("Loud");
For<ISound>().Add<AnimalSound>().Ctor<IVolume>().Is<SoftSound>().Named("Soft");
For<ICat>().Use<Cat>().Ctor<ISound>().Named("Soft");
For<IDog>().Use<Dog>().Ctor<ISound>().Named("Loud");

关于c# - 依赖需要根据StructureMap中请求的父类型进行不同的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com