处理对象之间的循环依赖关系的最佳方法是什么?

Jam*_*ers 6 dependencies dependency-injection

在我的代码中,我有以下对象:

  • ErrorManager - 控制如何在应用程序中记录错误
  • ConfigManager - 控制如何获取配置信息

在我正在进行的项目中,ErrorManager需要使用ConfigManager实例提取配置信息,而ConfigManager使用ErrorManager时会发生错误.

目前,我在代码中执行以下操作:

ErrorManager _errorManager = new CustomErrorManager();
ConfigManager _configManager = new CustomConfigManager(_errorManager);
_errorManager.SetConfigurationManager(_configManager);
Run Code Online (Sandbox Code Playgroud)

有没有办法让我清理这个依赖关系的循环引用?

Ale*_*x B 3

我会创建以下内容:

ErrorConfig _errorConfig = ...; 
// ErrorConfig is a new config object containing only ErrorManager Configuration
ErrorManager _errorManager = new CustomErrorManager(_errorConfig);
ConfigManager _configManager = new CustomConfigManager(_errorManager);
Run Code Online (Sandbox Code Playgroud)

现在,ConfigManager可以使用准备运行的 ErrorManager,而不会出现ErrorManager未准备好处理错误的引导问题。