我有一个 3 层的解决方案
一个
乙
C
在 C 层,我有接口 IRepository,它有两个实现,RepositoryX 和 RepositoryY。
在 B 层,我有接口 IController,在 AI 层有一个名为 Foo 的类。现在我知道我可以通过使用合同名称或导出元数据来控制 IRepository 的哪个实现被注入到依赖项中。
在 Controller 的实现中,我可以说我想要 RepositoryX 或 RepositoryY 并且可以。
在 A 层中的类 Foo 中,我对注入的 IController 有一个依赖项。如何在 Foo 类中控制我的 IController 将获得哪个 IRepository 实现?
我会寻找类似的东西:
class Foo
{
[Import("RepositoryX")]
public IController MyController { get; set; }
这将注入一个 IController,它本身具有一个类型为 RepositoryX 的存储库,该存储库注入到控制器的导入属性中。
有没有一种方法可以做到这一点,而不必定义除了哪种类型的存储库之外相同的 2 个控制器?