在先前工作的代码上抛出'System.TypeInitializationException'

时间:2016-10-17 22:33:29

标签: c# event-log

我的代码以前工作正常,但现在我运行它;它抛出了这个例外:

  

“System.TypeInitializationException”类型的未处理异常   发生在Debug 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);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

该异常表示从静态构造函数或字段初始值设定项引发异常。我怀疑它位于evl的初始值设定项中,因为它引用了没有设置初始值的静态属性(它们将是null)。

我会将该代码移动到静态构造函数,以便您可以更好地进行错误处理和/或记录。 evlbsnRecord都有静态初始化程序,它们容易受到运行时异常的影响,不应该取消选中。

我还质疑为什么你有使用其他静态属性初始化的静态属性。如果客户端代码设置了FilePath属性,那么您期望发生什么?