【问题标题】:how to resolve a dependency between two tightly coupled namespace(in different assembly)?如何解决两个紧密耦合的命名空间(在不同的程序集中)之间的依赖关系?
【发布时间】:2012-11-22 07:13:27
【问题描述】:

假设我有一个名为ITestService 的接口和它的配对实现,让我们在程序集“A”中称它为DefaultTestService。我在 Autofac 容器中将 DefaultTestService 类注册为 ITestService 服务。另一方面,程序集“A”有对程序集“B”的引用。现在我想通过程序集“B”中的相应接口(ITestService)解析 DefaultTestService,为此我必须首先添加对程序集“A”的引用这样我就可以访问 ITestService 并将其传递给 Resolve<T>() 方法。

循环依赖!

好的。我们可以通过为组件分配一个键并通过键来解决它。但是如果我没有注册依赖项(并且没有分配给它的键)怎么办?

有什么想法吗? 谢谢你的建议。

【问题讨论】:

  • ITestService 是否真的存在于 程序集 A 和 B 中??
  • 不肯定。说它存在!它们是两个相同的吗?

标签: c# dependency-injection autofac circular-dependency


【解决方案1】:

如果程序集 A 依赖于 B 并且两个程序集都需要 ITestService,则必须在程序集 B 或 A 和 B 都依赖的第三个程序集中定义此接口。

【讨论】:

  • 感谢您的响应。事实上,您是在建议我从一开始就做一些正确的事情(从软件工程的角度来看,这是一个好的设计)我会从这一点开始考虑它。但我目前的问题避风港没有解决。+1 票给你。
  • @BehnamEsmaili:对不起。我一定误解了你的问题。你还有什么问题?
  • @Steven.my 的问题是我不在代码的开头,因此我可以决定是否在其他中引用特定的程序集。我使用此依赖项编写了几个代码,因此我无法取消引用引用的程序集。
猜你喜欢
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2012-02-22
相关资源
最近更新 更多