dr.*_*vil 8 .net settings singleton scope global
我有一个日志类,需要从应用程序的几乎所有地方调用.
但是,它需要在应用程序的开头设置"写入哪条路径","日志级别"以及是否"启用".
我不想每次都给这个参数或者将Logging类作为参数传递给我的应用程序中的每个对象,所以我使用单例模式进行日志记录.
最近我从紧密耦合的课程中遭受了很多痛苦,我不想再犯同样的错误,但在考虑这个之后听起来这是唯一的好解决方案.
更新:
我真的不关心记录我关心的解决类似设计问题的事情,我对另一个需要从这么多类中使用的全局设置对象遇到了同样的困境.但是将它注入到它们的每一个中只会产生可怕的开销和不太可读的代码.
您对此实施有何看法?当您遇到类似的设计决策时,您会怎么做?
PS请不要建议像"使用Log4X库"等.
首先 - 您可以将日志编写器编写为跟踪侦听器,并使用Trace.Write方法中的 etc 吗?
你真的需要一个实例吗?例如,如果您想将其抽象为 aTextWriter或类似的,那么这将很有用 - 但如果它将是一个独立的单例,这些方法是否可以不直接使用静态方法,即Log.Write(...)(而不是传入日志实例)?
关于一般问题 - 这取决于进行日志记录的类型。对于“管理器”(等)类,您可以考虑使用依赖项注入(Unity、StructureMap 等)来自动执行此操作。不过,我通常不会使用 DTO 注入。