Felipe Oriani
Felipe Oriani

Reputation: 38598

TypeInitializationException exception on creating an object

I have an assembly (class library project in .Net 3.5) that has some references like System.Configuration and System.Web. I use it on a web application and it works fine.

Now, I need to make a reference to a Windows Forms project and I can't understand what is happening. When I try to create an instance of my class it does not work; an exception of type TypeInitializationException is thrown.

I try to create other instances of my assembly and those work, except this specific class.

Does anybody know what is happening?

Upvotes: 35

Views: 57163

Answers (4)

user1412699
user1412699

Reputation: 1994

For me it was duplicate key in static dictionary

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

Upvotes: 1

Travis
Travis

Reputation: 1095

Just to catch another scenario, this error will be thrown when your AppConfig contains a section that is not defined in the configSections node. It's case sensitive, so verify that your custom config sections match what's in the configSections node.

Upvotes: 4

Timothy Fries
Timothy Fries

Reputation: 2233

TypeInitializationException is usually thrown when a static field of the class can't be initialized. For example:

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

Will cause a TypeInitializationException prior to the first usage of BadClass if the constructor for MyClass throws.

You can look at the InnerException property of the TypeInitializationException to drill down into the cause of the failure in more detail. It will usually point you to the underlying exception that caused the type initialization to fail.

Upvotes: 72

driis
driis

Reputation: 164291

TypeInitializationException is thrown when the class initializer fails. There can be a number of reasons to this, but most likely you have some code in your class' static constructor, that throws an exception. You can likely look at the InnerException property to get the real exception.

Upvotes: 10

Related Questions