如何避免无限循环,最佳实践

时间:2012-03-05 00:38:55

标签: c# .net error-handling

我在c#中有一个类来帮助我记录错误(ErrorClass)。

  • 该课程有3种方法。记录错误:文件系统,Windows事件, 电子邮件。
  • 3种方法中的2种需要设置“电子邮件”或“目录路径”。
  • 设置存储在注册表中
  • 我使用依赖注入来实例化RegistryClass中的ErrorClass

这是我在Registry Class

中实例化ErrorHandle类的方法

ErrorHandle _ErrorHandle = new ErrorHandle();

以下是我在ErrorHandle类

中实例化Registry类的方法

RegistryTools _GetRegistry = new RegistryTools();

我有一个类来帮助我从注册表中检索值(RegistryClass

  • 注册表类需要处理错误
  • 我使用依赖注入来实例化errorClass
  • 中的RegistryClass

当我在两个类中使用依赖注入时,会在出现错误时创建无限循环。

处理这种情况的建议方法或最佳做法是什么:

  • 我应该访问ErrorClass内的注册表吗?
  • 我不应该错误地处理RegistryClass吗?
  • 我应该为此创建一个单独的ErroHandle过程 RegistryClass

2 个答案:

答案 0 :(得分:0)

不要重新发明这个轮子。有一个经过验证的.NET开源日志记录框架,log4net。如果您认为需要使用DI,则可以执行too。 log4net使用XML文件进行配置,与处理注册表相比,它更易于访问且不那么危险。它还会吞下自己的错误,并通过调试跟踪来访问它们。

答案 1 :(得分:0)

您使用什么机制进行DI?如果你使用setter注入,应该没有什么可以阻止你做类似的事情:

var logger = new ErrorClass();
var registry = new RegistryClass();
logger.Registry = registry;
registry.Logger = logger;