2010-11-13 28 views
1

我有一个单身,当我把它从我的单元测试,我得到TypeInitializationException在我的单例中。我该如何解决它?

“System.TypeInitializationException是由用户代码未处理 消息=为“的类型初始mycompany.class'threw异常”

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"; 
    } 
} 
+0

我想我们可能需要看到更多的代码... – 2010-11-13 12:00:52

+1

mycompany.class在哪里? – 2010-11-13 12:04:21

+0

TypeInitializationException的InnerException是什么? – 2010-11-13 15:47:54

回答

2

我看不到有什么......如果你有一个静态字段初始化器,为什么该属性需要检查null?其实我嫌疑这是由于该领域的初始化剂在静态构造函数运行其他代码等

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

+0

由于“字段初始化程序在*其他代码之前运行*”,是否可以在它存在之前调用'GetConnectionstring()'“?如果触发'NullReferenceException',它可能会解释'TypeInitializationException'。 – Patrick 2010-11-13 15:21:19

1

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

相关问题