Исключение TypeInitializationException при создании объекта - PullRequest
33 голосов
/ 11 августа 2011

У меня есть сборка (проект библиотеки классов в .Net 3.5), которая имеет некоторые ссылки, такие как System.Configuration и System.Web. Я использую его в веб-приложении, и он отлично работает.

Теперь мне нужно сделать ссылку на проект Windows Forms, и я не могу понять, что происходит. Когда я пытаюсь создать экземпляр моего класса, он не работает; исключение типа TypeInitializationException.

Я пытаюсь создать другие экземпляры моей сборки и этой работы, кроме этого конкретного класса.

Кто-нибудь знает, что происходит?

Ответы [ 4 ]

69 голосов
/ 11 августа 2011

TypeInitializationException обычно генерируется, когда статическое поле класса не может быть инициализировано.Например:

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

вызовет исключение TypeInitializationException перед первым использованием BadClass, если конструктор MyClass сгенерирует.Причина отказа более подробно.Обычно он указывает на основное исключение, которое вызвало сбой инициализации типа.

9 голосов
/ 11 августа 2011

TypeInitializationException генерируется при сбое инициализатора класса. Причин может быть несколько, но, скорее всего, у вас есть код в статическом конструкторе вашего класса, который выдает исключение. Скорее всего, вы можете взглянуть на свойство InnerException, чтобы получить реальное исключение.

4 голосов
/ 07 июня 2016

Просто чтобы поймать другой сценарий, эта ошибка будет выдана, если ваш AppConfig содержит раздел, который не определен в узле configSections.Он чувствителен к регистру, поэтому убедитесь, что ваши пользовательские разделы конфигурации совпадают с тем, что находится в узле configSections.

1 голос
/ 17 января 2017

Для меня это был дубликат ключа в статическом словаре

public static Dictionary<string, int> Cities = new Dictionary<string, int>(){
{"New York", 1},
{"Amsterdam", 2},
{"New York", 1}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...