【发布时间】:2012-09-06 13:59:16
【问题描述】:
我有两个类需要相互引用。
class Foo
{
public Foo(IBar bar) {}
}
class Bar
{
public Bar(IFoo foo) {}
}
当我这样做时:
container.RegisterAutoWiredAs<Foo, IFoo>();
container.RegisterAutoWiredAs<Bar, IBar>();
当我尝试解析任一接口时,我得到一个循环依赖图,导致无限循环。有没有在 Funq 中解决这个问题的简单方法,或者您知道解决方法吗?
【问题讨论】:
-
循环引用通常指向更大的问题。也许
IBar或IFoo变得太大,需要拆分成单独的角色接口? -
是的,但不是我的问题的答案。
-
循环 deps 通常是一种代码气味。解决它的一种方法是拥有一个接受/包含两者的复合依赖项 - 然后你可以传递它。
-
您使用的是哪个 IoC 容器?
-
我使用的是 ServiceStack 附带的 Funq 版本
标签: c# ioc-container servicestack circular-dependency funq