【问题标题】:TypeInitializationException exception on creating an object创建对象时出现 TypeInitializationException 异常
【发布时间】:2011-10-24 10:15:27
【问题描述】:

我有一个程序集(.Net 3.5 中的类库项目),其中有一些引用,例如 System.ConfigurationSystem.Web。我在 Web 应用程序上使用它,它运行良好。

现在,我需要引用一个 Windows 窗体项目,但我不明白发生了什么。当我尝试创建我的类的实例时,它不起作用;抛出 TypeInitializationException 类型的异常。

我尝试创建我的程序集的其他实例并且这些实例工作,除了这个特定的类。

有人知道发生了什么吗?

【问题讨论】:

  • 该类是否有抛出异常的静态构造函数?

标签: c# .net winforms exception


【解决方案1】:

对我来说,它是静态字典中的重复键

public static Dictionary<string, int> Cities = new Dictionary<string, int>(){
{"New York", 1},
{"Amsterdam", 2},
{"New York", 1}
};

【讨论】:

    【解决方案2】:

    只是为了捕捉另一种情况,当您的 AppConfig 包含未在 configSections 节点中定义的部分时,将引发此错误。它区分大小写,因此请验证您的自定义配置部分是否与 configSections 节点中的内容匹配。

    【讨论】:

    • 谢谢...这很可能也是答案——它是给我的!
    • 同样,如果 app.config 的 XML 格式不正确。
    【解决方案3】:

    TypeInitializationException 通常在类的静态字段无法初始化时抛出。例如:

    class BadClass
    {
        private static MyClass fieldName = new MyClass();
    }
    

    如果 MyClass 的构造函数抛出,将在第一次使用 BadClass 之前引发 TypeInitializationException。

    您可以查看 TypeInitializationException 的 InnerException 属性,以更详细地深入了解失败的原因。它通常会指出导致类型初始化失败的底层异常。

    【讨论】:

    • 不一定是字段,可以是静态构造函数中的任何东西。
    • 谢谢,我忘记了,我正在初始化一个静态字段,它正在寻找一些配置 ni .config 文件,现在我添加了这个配置,它对我有用。干杯!
    • @driis:确实如此;但是我认为,当您已经开始编写静态构造函数时,您已经足够“先进”,以至于您希望了解它失败的后果。而简单地初始化一个静态字段是很常见且足够简单的事情,它是一个在没有深入了解类的生命周期的情况下使用的功能,这就是为什么我把它作为一个可能的原因特别指出。
    • 感谢您的提示!我在测试 Xamarin.Android 应用程序时收到此问题半小时。
    【解决方案4】:

    TypeInitializationException 在类初始化失败时抛出。这可能有很多原因,但很可能您的类的静态构造函数中有一些代码会引发异常。您可能可以查看 InnerException 属性以获取真正的异常。

    【讨论】:

      猜你喜欢
      • 2015-03-20
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      相关资源
      最近更新 更多