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?
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.
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.
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.
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}
};