Errore C # “L’inizializzatore del tipo per … ha generato un’eccezione

Questo errore si verifica solo su alcuni computer. Leggendo le informazioni dello stack, c’è qualche problema quando chiamo a questo metodo statico (“FormatQuery”) in una class statica:

using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.IO; using System.Text; using System.Windows.Forms; using DevExpress.XtraEditors; using FlexCel.Report; using FlexCel.XlsAdapter; using ComboBox=System.Windows.Forms.ComboBox; namespace XSoftArt.A { static class RHelper { private static string FormatQuery(string FieldName, int Count, CheckedListBox chekedListBox) { string ID = string.Empty; int n = Count; foreach (DataRowView item in chekedListBox.CheckedItems) { ID = ID + item["" + FieldName + ""]; if (n > 1) { ID = ID + " , "; n--; } } return ID; } public static string FormatQuery(CheckedListBox chekedListBox) { return FormatQuery(chekedListBox.ValueMember, chekedListBox.CheckedItems.Count, chekedListBox); } } 

Allora, qual’è il problema? Come lo risolvo? C’è qualcosa di sbagliato nella configurazione del progetto o nella modalità di debbuging o cosa?

Informazioni sull’errore:

  at XSoftArt.EVS.ReportHelper.FormatQuery(CheckedListBox chekedListBox) at XSoftArt.EVS.NewEmailSelectClient.LoadList_v2(String search, TextBox txtbox) at XSoftArt.EVS.NewEmailSelectClient.LoadContacts() at XSoftArt.EVS.NewEmailSelectClient.button7_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 

Ho provato il tuo codice:

 CheckedListBox cb = new CheckedListBox(); for (var i = 1; i < 11; i++) cb.Items.Add("Item " + i, i % 3 == 0); string fmt = RHelper.FormatQuery(cb); Console.WriteLine(fmt); Console.ReadLine(); 

Ha lanciato un'eccezione a questa linea:

 foreach (DataRowView item in chekedListBox.CheckedItems) // Unable to cast object of type 'System.String' to type 'System.Data.DataRowView'. 

Forse anche tu stai affrontando lo stesso tipo di problema. Invece di eseguire il casting su DataRowView , provare ad apportare le seguenti modifiche:

 foreach (var item in chekedListBox.CheckedItems) { ID = ID + item.ToString(); // item["" + FieldName + ""]; 

Perché gli elementi in CheckedListBox sono di tipo di object .

Un’eccezione Initializer di tipo indica che non è stato ansible creare il tipo. Ciò si verifica in genere proprio prima della chiamata al metodo quando si fa semplicemente riferimento a quella class.

Il codice che hai qui è il testo completo del tuo tipo? Sarei alla ricerca di qualcosa come un incarico di fallire. Lo vedo molto con le impostazioni delle app e cose di questa natura.

 static class RHelper { //If this line of code failed, you'd get this error static string mySetting = Settings.MySetting; } 

Puoi anche vederlo con costruttori statici per i tipi.

In ogni caso, c’è dell’altro in questa class?

Ho avuto lo stesso errore ma nel mio caso è stato causato dalla mancata corrispondenza nelle impostazioni di destinazione della piattaforma. Una libreria è stata impostata specificamente su x86 mentre l’applicazione principale era impostata su “Qualsiasi” … e quindi ho spostato il mio sviluppo su un laptop x64.

Questo problema può verificarsi se una class tenta di ottenere il valore di una chiave inesistente in web.config .

Ad esempio, la class ha una variabile statica ClientID

 private static string ClientID = System.Configuration.ConfigurationSettings.AppSettings["GoogleCalendarApplicationClientID"].ToString(); 

ma web.config non contiene la chiave “GoogleCalendarApplicationClientID”, quindi l’errore verrà generato su qualsiasi chiamata di funzione statica o qualsiasi creazione di istanza di class

Ho ricevuto questo errore quando ho modificato un file di configurazione di Nlog e non ho formattato correttamente l’XML.

Ho ricevuto questo errore con il mio codice. Il mio problema era che avevo le chiavi duplicate nel file di configurazione.

Ho ricevuto questo errore durante il tentativo di accedere a un target NLog che non esisteva più.

Se si dispone di servizi Web, controllare l’ URL che punta al servizio. Ho avuto un problema simulare che è stato risolto quando ho cambiato il mio URL del servizio web.

Ciò può essere causato dal fatto di non disporre delle autorizzazioni di amministratore per il Oracle Client . Aggiungi questo nel file App.config :

  

Ho avuto questo problema e come Anderson Imes ha detto che ha a che fare con le impostazioni dell’app. Il mio problema era che l’ambito di una delle mie impostazioni era impostato su “Utente” quando avrebbe dovuto essere “Applicazione”.

Questo errore è stato generato per me con un file NLog.config formattato in modo errato.