私の手に.Netの謎があります。 .Netデータ型は、型 '' 'System.String'の型にオブジェクトをキャストできません。
我々は、このエラーを引き起こしMSSQLデータベーステーブルのみint型および様々な長さのNULL可能NVARCHAR列を含ま
---> System.InvalidCastException: Unable to cast object of type '' to type 'System.String'.
at System.Data.DataColumn.IsMaxLengthViolated()
at System.Data.DataTable.EnableConstraints()
at System.Data.DataTable.EndLoadData()
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.DataTable.Load(IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler)
次のスタックトレースを受けました。
テーブルには、DBNullと文字列値の両方が含まれています。
最初の型の名前が空文字列として表示されるInvalidCastExceptionをトリガーすることはできません。 ' dbクエリが返す可能性のあるすべての型を試しました。
- はDBNull
- int型
- int型?
- たSqlString
我々は常に我々はそれが不正な形式のメッセージを表示して、独自のInvalidCasetExceptionを構築疑うIsMaxLengthViolatedコードを逆コンパイルだけで、通常のキャストを見つけ
InvalidCastExceptionが正しい型名を受け取る
if (obj != null && obj != DBNull.Value && ((string) obj).Length > this.MaxLength)
このメッセージは、.NETフレームワークによって一見生成されました。
このような不正なInvalidCastExceptionをトリガーする既知の方法はありますか?
あなたがすでに考えていれば申し訳ありませんが、文字列にcharをキャストしようとしているようです。 –
あなたはデータベースにアクセスできますか?明らかに、.Netは文字列にキャストできず、その型を判別できないというデータテーブルの値です。たぶんあなたが見つけることができるすべての価値を研究するなら、どちらがあるか。とにかく、実際には本当に奇妙です – Pikoh