2016-10-14 6 views
0

EventLogReaderおよびEventRecordクラスを使用してローカルコンピュータからイベントログを読み取ろうとしています。 C#の使用。C#|受信CS0236エラー:フィールド初期化子が非静的なフィールド、メソッド、またはプロパティ 'getInfo.BSN_Navigator'を参照できません

は私が私が間違っているの何

CS0236 Error: A field initializer cannot reference the non-static field, method, or property 'getInfo.BSN_Navigator'

わからないエラーを取得しておきます。

コード:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Diagnostics.Eventing.Reader; 

/// </var bank> 

/// </var bank> 

namespace EventLogInfoReader 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine(); 
      String inputString = Console.ReadLine(); 
     } 
    } 
} 

public class getInfo 
{ 
    public static PathType FilePath { get; private set; } 

    EventLogReader BSN_Navigator = new EventLogReader("c:\\Users\\banvilb\\Documents\\Event Log\\FalconBackup_Sep192016T124905\\BSN_Navigator.evt", FilePath); 

    EventRecord bsnRecord = BSN_Navigator.ReadEvent(); 

    public void getLogName() 
    { 
     string x = bsnRecord.LogName; 
     Console.WriteLine(x); 
    } 

    public void getId() 
    { 
     int x = bsnRecord.Id; 
     Console.WriteLine(x); 
    } 
} 

答えて

1

コンストラクタに行く必要EventRecord bsnRecord = BSN_Navigator.ReadEvent();

フィールドは、宣言でどのように初期化できるかが制限されています。あなたの場合、メソッドを呼び出そうとしていますが、メソッドの外にメソッドを呼び出すことはできません。つまり、コンストラクタで初期化する必要があります。

public class getInfo 
{  
    EventLogReader BSN_Navigator = new EventLogReader("BSN_Navigator.evt", FilePath); 

    EventRecord bsnRecord; 

    public getInfo() 
    { 
     bsnRecord = BSN_Navigator.ReadEvent(); 
    } 
} 
関連する問題