C# 无法使用实例引用访问System.Diagnostics.EventLog
我正在创建Windows服务,在尝试写入事件日志时遇到了一个小问题。我有以下代码C# 无法使用实例引用访问System.Diagnostics.EventLog,c#,windows,service,event-log,C#,Windows,Service,Event Log,我正在创建Windows服务,在尝试写入事件日志时遇到了一个小问题。我有以下代码 class WindowsService : ServiceBase { public WindowsService() { ((ISupportInitialize)this.EventLog).BeginInit(); if (!EventLog.SourceExists(this.ServiceName)) { Even
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)”;改为使用类型名称限定它
我不知道为什么,我已经检查了一个备份,这也是抛出一个错误
有人有什么想法吗
谢谢
SourceExists
和CreateEventSource
都是静态方法,您需要使用类型名称而不是实例变量来限定它们。根据错误和以下情况:
this.EventLog
您可能有一个名为EventLog
的实例变量。将其重命名为不太容易混淆的名称,例如CurrentEventLog
。与现有名称不冲突的任何有意义的名称
基本上,不要将变量命名为与其类型相同的名称。这不仅会让编译器感到困惑,还会让需要维护该代码的任何人感到困惑。这是什么类型的。ServiceName?没错,我忘了我在数据库中合并了一个名为EventLog的表,该表已重命名,当然可以正常工作。