单例中的TypeInitializationException。我该如何解决?

时间:2010-11-13 11:46:49

标签: c#

我有一个单身人士,当我从我的UnitTest调用它时,我得到了

“System.TypeInitializationException未被用户代码处理   Message ='mycompany.class'的类型初始值设定项引发异常“

public sealed class MySingleton
{

  private static  MySingleton instance = new MySingleton();

  private MySingleton()
  {
    ConnectionString = GetConnectionstring();
  }

  public static MySingleton NewConnectivity
  {
    get { return instance ?? (instance = new MySingleton()); }
  }

  public string ConnectionString { get; set; }

  private static string GetConnectionstring()
  {
    return "bla";
  }
}

2 个答案:

答案 0 :(得分:2)

我从那里看不到多少...如果你有一个静态字段初始化器,为什么属性需要检查null?实际上我怀疑这是因为字段初始化程序在静态构造函数中的其他代码之前运行

我会尝试删除字段初始化程序 - 但请注意,如果没有这个,可能会导致创建多个对象的边缘情况(计时/线程竞争)。如果这是不可接受的,有很多方法可以避免这种线程竞争。

答案 1 :(得分:1)

当“mycompany.class”类中的静态构造函数抛出异常时,会发生TypeInitializationException。尝试在静态构造函数中放置一个断点并进入每个调用?在那种情况下你会得到一些其他的例外吗?