【发布时间】:2012-10-29 19:18:56
【问题描述】:
我有一个 3 层的解决方案
一个
B
C
在 C 层,我有接口 IRepository,它有两个实现,RepositoryX 和 RepositoryY。
在 B 层,我有接口 IController,在 A 层我有一个名为 Foo 的类。现在我知道我可以通过使用合同名称或导出元数据来控制 IRepository 的哪个实现被注入到依赖项中。
在 Controller 的实现中,我可以说我想要 RepositoryX 或 RepositoryY 并且有效。
在 A 层的 Foo 类中,我有一个 IController 依赖项,它被注入。如何在 Foo 类中控制我的 IController 将获得哪个 IRepository 实现?
我会寻找类似的东西:
class Foo
{
[Import("RepositoryX")]
public IController MyController { get; set; }
这会注入一个 IController,它本身有一个类型为 RepositoryX 的存储库,该存储库注入到控制器的导入属性中。
有没有一种方法可以做到这一点,而不必定义 2 个除了哪种类型的存储库之外都相同的控制器?
【问题讨论】:
标签: c# inversion-of-control mef