web-dev-qa-db-fra.com

Exception TypeInitializationException lors de la création d'un objet

J'ai un assembly (projet de bibliothèque de classes dans .Net 3.5) qui a des références comme System.Configuration et System.Web. Je l'utilise sur une application web et ça marche bien.

Maintenant, je dois faire référence à un projet Windows Forms et je ne comprends pas ce qui se passe. Lorsque j'essaie de créer une instance de ma classe, cela ne fonctionne pas; une exception de type TypeInitializationException est levée.

J'essaie de créer d'autres instances de mon Assemblée et ces travaux, à l'exception de cette classe spécifique.

Quelqu'un sait-il ce qui se passe?

34
Felipe Oriani

TypeInitializationException est généralement levée lorsqu'un champ statique de la classe ne peut pas être initialisé. Par exemple:

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

Provoquera une exception TypeInitializationException avant la première utilisation de BadClass si le constructeur de MyClass lève.

Vous pouvez consulter la propriété InnerException de TypeInitializationException pour explorer plus en détail la cause de l'échec. Il vous indiquera généralement l'exception sous-jacente qui a provoqué l'échec de l'initialisation du type.

70
Timothy Fries

TypeInitializationException est levé lorsque l'initialiseur de classe échoue. Il peut y avoir un certain nombre de raisons à cela, mais très probablement vous avez du code dans le constructeur statique de votre classe, qui lève une exception. Vous pouvez probablement consulter la propriété InnerException pour obtenir la véritable exception.

9
driis

Juste pour attraper un autre scénario, cette erreur sera levée lorsque votre AppConfig contient une section qui n'est pas définie dans le nœud configSections. Il est sensible à la casse, alors vérifiez que vos sections de configuration personnalisées correspondent à ce qui se trouve dans le nœud configSections.

4
Travis

Pour moi, c'était une clé en double dans le dictionnaire statique

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