EventLog 实例与静态方法 - 偏好?
写入事件日志时,我可以创建一个 EventLog 实例,将其作为成员变量保存,并在每次想要记录消息时调用 WriteEntry(string message) 。
或者,我可以只调用静态版本:EventLog.WriteEntry(string source, string message)。
我应该选择其中一种而不是另一种吗?
在我目前的情况下,我打算拥有一个包含一两个来源的自定义日志。
When writing to an event log, I can create an instance of EventLog, hold onto it as a member variable and call WriteEntry(string message) on it every time I want to log a message.
Alternatively, I can just call the static version: EventLog.WriteEntry(string source, string message).
Should I prefer one alternative over the other?
In my current situation I intend to have a custom log with one or two sources.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您正在编写测试驱动或单元测试代码,则不建议使用静态类。
我会将 EventLog 包装在一个实现通用 ILog 接口的类中。您可以注入此类或在使用它的每个类中实例化它。如果您需要用其他日志记录方法替换 EventLog,这将为您提供最佳的灵活性。
示例界面:
您可以扩展或更改它以创建对您有意义的合同。
If you are writing test driven or unit testing your code, the use of a static class is not recommended.
I would wrap EventLog in a class that implements a generic ILog interface. You can inject this class or instantiate it within each class that uses it. This should give you the best flexibility going forward should you need to replace EventLog with some other logging method.
Example Interface:
You can extend or alter this to create a contract that makes sense to you.
对于这种情况,最好实现单例模式
It is better you implement Singleton pattern for this case