C#错误“types初始值设定项…抛出exception
此错误仅在某些计算机上发生。 通过读取堆栈信息,在静态类中调用此静态方法(“FormatQuery”)时会出现一些问题:
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); } }
所以有什么问题? 我如何解决它? 项目configuration或debbuging模式有什么问题吗?
错误信息:
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)
我试过你的代码:
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();
它在这条线上抛出一个exception:
foreach (DataRowView item in chekedListBox.CheckedItems) // Unable to cast object of type 'System.String' to type 'System.Data.DataRowView'.
也许你也面临同样的问题。 而不是投射到DataRowView ,请尝试进行以下更改:
foreach (var item in chekedListBox.CheckedItems) { ID = ID + item.ToString(); // item["" + FieldName + ""];
因为CheckedListBox中的项目是对象types的。
types初始值设定项例外表示无法创buildtypes。 当您简单地引用该类时,通常会在调用您的方法之前发生。
你在这里的代码是你的types的完整文本? 我会寻找像分配失败的东西。 我通过获取应用程序设置和这种性质看到了很多。
static class RHelper { //If this line of code failed, you'd get this error static string mySetting = Settings.MySetting; }
你也可以看到这个types的静态构造函数。
无论如何,这个class还有什么?
我有同样的错误,但在我的情况下,这是由平台目标设置不匹配造成的。 一个库专门设置为x86,而主应用程序设置为“任何”…然后我将我的开发移到一台x64笔记本电脑上。
如果某个类尝试获取web.config
不存在的键的值,则可能会出现此问题。
例如,类有一个静态variablesClientID
private static string ClientID = System.Configuration.ConfigurationSettings.AppSettings["GoogleCalendarApplicationClientID"].ToString();
但web.config
不包含'GoogleCalendarApplicationClientID'键,那么将会在任何静态函数调用或任何类实例创build时抛出错误
当我修改一个Nlogconfiguration文件并且没有正确地格式化XML时,我得到了这个错误。
我用自己的代码得到了这个错误。 我的问题是我在configuration文件中有重复的键。
尝试login到不再存在的NLog目标时出现此错误。
如果您有Web服务,请检查指向该服务的URL 。 我有一个类似的问题,当我更改我的Web服务URL时,这个问题已经修复。
这可能是由于没有Oracle Client
pipe理员权限。 将其添加到App.config
文件中:
<IPermission class="Oracle.DataAccess.Client.OraclePermission, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342" version= "1" Unrestricted="true"/>
我有这个问题,像安德森·艾姆斯说,它必须做的应用程序设置。 我的问题是我的一个设置的范围被设置为“用户”,当它应该是“应用程序”。
这个错误是由于我有一个格式不正确的NLog.config文件而产生的。