System.Diagnostics.EventLog 无法使用实例引用访问

System.Diagnostics.EventLog Cannot be Accessed with an Instance Reference

我正在创建一个 Windows 服务,但在尝试写入 EventLog 时遇到了一个小问题。我有以下代码;

class WindowsService : ServiceBase
{
    public WindowsService()
    {
        ((ISupportInitialize)this.EventLog).BeginInit();

        if (!EventLog.SourceExists(this.ServiceName))
        {
            EventLog.CreateEventSource(this.ServiceName, "Application");
        }
        ((ISupportInitialize)this.EventLog).EndInit();
    }
}

这是基于 MSDN 文章和此处的另一个 SO 问题,它一直运行到昨晚,但是今天早上它无法正常工作并出现错误

成员'EventLog.SourceExists(string)'不能用实例引用访问;用类型名称限定它

成员'EventLog.CreateEventSource(string, string)'不能用实例引用访问;用类型名称限定它

我不确定为什么,我已经检查了备份,但也出现了错误。

有没有人有什么想法?

谢谢

SourceExistsCreateEventSource 是静态方法,您需要使用类型名称而不是实例变量来限定它们。基于错误和这个:

this.EventLog

大概你有一个名为 EventLog 的实例变量。将其重命名为不那么混乱的名称,例如 CurrentEventLog。任何不与 现有 名称冲突的有意义的名称。

基本上,不要将变量命名为与其类型相同的名称。这不仅会引起编译器的混淆,还会引起必须维护该代码的任何人的混淆。