【发布时间】:2013-08-29 07:59:10
【问题描述】:
我是依赖注入的新手,我正在尝试解决一个问题。我有两个服务。这些服务中的每一个都有相互需要的方法。
例如:SiteManager 有需要我的ForumManager 的方法。我的ForumManager 有需要我的SiteManager 的方法。
我有以下两个类:
public class SiteManager:ISiteManager
{
public IForumManager ForumManager { get; set; }
public SiteManager()
{
this.ForumManager = new ForumManager();
}
}
public class ForumManager:IForumManager
{
public ISiteManager SiteManager { get; set; }
public ForumManager()
{
this.SiteManager = new SiteManager();
}
}
很明显这将导致堆栈溢出异常,因为它们相互调用。我在这里阅读了很多帖子,我想我只需要一个关于如何解决这个问题的小提示。我在他们自己的程序集中有我的接口。
我考虑过将依赖项放在它们自己的属性中,这样当它们被使用时,它们就会被制作出来。但是,这是最佳做法吗?
我不使用 IoC 容器(而且我之前没有使用过)。
有关如何以“最佳实践”方式解决此特定问题的任何提示! :-)
【问题讨论】:
-
一个没有参数实例化的“*Manager”听起来不太可能需要多个实例。您是否考虑过让它们成为单例对象并完全绕过这个问题?
-
如何使用继承拥有一个包含所有常用方法的管理器类?
-
听起来你的责任错了。为什么 ForumManager 需要对 SiteManager 的引用?反之亦然?
-
同意马特戴维的观点。为什么它们相互依赖?
标签: c# design-patterns dependency-injection