2016-10-17 2 views
0

以前は正常でしたが、今すぐ実行しました。それがこの例外をスローします:型「System.TypeInitializationException」 の'System.TypeInitializationException'は以前に動作していたコードでスローされました

未処理の例外は、デバッグChamber.exeで発生しました追加情報:「varBank」のタイプ初期化子 が例外をスローしました。

何でも奇妙だが、私はこのクラスを添加した以外は何も変わっていないことである:問題の

public class readParameters 
{ 
    public static void readLog(int start, int end) 
    { 
     for (int x = start; x < end; x++) 
     { 

     } 
    } 
    public static void nextLine() 
    { 
     string[,] logArr = new string[4, 5]; 
    } 
} 

ラインが


/// </data bank> 
public class varBank 
{ 
    public static string logInput { get; set; } 

    public static PathType FilePath { get; private set; } 

    public static EventLogReader evl = new EventLogReader(logInput, FilePath); 

    public static EventRecord bsnRecord = evl.ReadEvent(); 
} 
/// </data bank> 

namespace EventLogInfoReader 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("Enter Log Location: "); 
  varBank.logInput = Console.ReadLine(); 
以下のブロックで強調表示されます
  Console.WriteLine("Enter Read Parameters: "); 
      int i = 1; 
      while (++i > 0) 
      { 
       Console.WriteLine("Enter Property: "); 
       string CommandInput = Console.ReadLine(); 
       getInfo.callInfo(CommandInput); 
      } 
     } 
    } 
} 
+0

静的フィールドの1つが初期化に失敗しました...アプリケーションの起動をデバッグしてどのファイルを見つけるか...また、ファイルを読み取っていると思います... –

答えて

0

この例外は、静的コンストラクタまたはフィールド初期化子から例外がスローされたことを意味します。初期値が設定されていない静的プロパティ(つまり、null)を参照しているため、evlのイニシャライザにあると思われます。

私はそのコードを静的なコンストラクタに移して、より良いエラー処理やロギングを行うことができます。 evlbsnRecordには、実行時例外の影響を受けやすい静的イニシャライザがあり、チェックを外すべきではありません。

また、静的プロパティがその他のの静的プロパティを使用して初期化されている理由についても質問します。クライアントコードでFilePathプロパティが設定されている場合、どうなるでしょうか?

関連する問題