我正在使用C#编写WCF服务。最初,我的实现中有一个静态构造函数来进行一次性的初始化,但其中一些被执行的初始化可能(暂时)失败了。
似乎静态构造函数只会被调用一次,即使第一次(失败的)尝试抛出异常?任何后续实例化我的类的尝试都将立即失败,并且代码实际上不会被执行,而会抛出一个“TypeInitializationException”异常。
C#语言规范规定,静态构造函数最多只会被调用一次,但如果有异常,基本上这是一个您永远无法恢复的错误?我漏掉了什么吗?我想应该将任何具有风险的内容移动到服务的实例构造函数中,并手动检查类初始化是否已经成功完成。
似乎静态构造函数只会被调用一次,即使第一次(失败的)尝试抛出异常?任何后续实例化我的类的尝试都将立即失败,并且代码实际上不会被执行,而会抛出一个“TypeInitializationException”异常。
C#语言规范规定,静态构造函数最多只会被调用一次,但如果有异常,基本上这是一个您永远无法恢复的错误?我漏掉了什么吗?我想应该将任何具有风险的内容移动到服务的实例构造函数中,并手动检查类初始化是否已经成功完成。
_initialized
布尔值是volatile
的(如果没有双重检查锁定,这应该是不必要的)。 - Thorarin