@@ -104,24 +104,31 @@ private IEnumerable<object[]> GetRowsConverted(IEnumerable<string[]> rows)
104104 var rowConverted = new object [ fieldsCount ] ;
105105 for ( int i = 0 ; i < fieldsCount ; i ++ )
106106 {
107- // If not a string => String.Empty = NULL
108- if ( fieldsType [ i ] != typeof ( string ) && String . IsNullOrEmpty ( row [ i ] ) )
107+ try
109108 {
110- row [ i ] = "NULL" ;
111- }
112-
113- if ( fieldsType [ i ] != null && String . Compare ( row [ i ] , "NULL" , ignoreCase : true ) != 0 )
114- {
115- // Convert
116- var converter = System . ComponentModel . TypeDescriptor . GetConverter ( fieldsType [ i ] ) ;
117- rowConverted [ i ] = Convert . ChangeType ( converter . ConvertFromInvariantString ( row [ i ] ) , fieldsType [ i ] ) ;
109+ // If not a string => String.Empty = NULL
110+ if ( fieldsType [ i ] != typeof ( string ) && String . IsNullOrEmpty ( row [ i ] ) )
111+ {
112+ row [ i ] = "NULL" ;
113+ }
118114
119- // Guillemets
120- if ( fieldsType [ i ] == typeof ( string ) && row [ i ] . Length >= 2 && row [ i ] [ 0 ] == '"' && row [ i ] [ row [ i ] . Length - 1 ] == '"' )
115+ if ( fieldsType [ i ] != null && String . Compare ( row [ i ] , "NULL" , ignoreCase : true ) != 0 )
121116 {
122- rowConverted [ i ] = row [ i ] . Substring ( 1 , row [ i ] . Length - 2 ) ;
117+ // Convert
118+ var converter = System . ComponentModel . TypeDescriptor . GetConverter ( fieldsType [ i ] ) ;
119+ rowConverted [ i ] = Convert . ChangeType ( converter . ConvertFromInvariantString ( row [ i ] ) , fieldsType [ i ] ) ;
120+
121+ // Guillemets
122+ if ( fieldsType [ i ] == typeof ( string ) && row [ i ] . Length >= 2 && row [ i ] [ 0 ] == '"' && row [ i ] [ row [ i ] . Length - 1 ] == '"' )
123+ {
124+ rowConverted [ i ] = row [ i ] . Substring ( 1 , row [ i ] . Length - 2 ) ;
125+ }
123126 }
124127 }
128+ catch ( Exception )
129+ {
130+ throw new InvalidCastException ( $ "Invalid conversion of \" { row [ i ] } \" to \" { fieldsType [ i ] . Name } \" , for column \" { Fields . ElementAt ( i ) . Name } \" .") ;
131+ }
125132 }
126133 yield return rowConverted ;
127134 }
@@ -206,7 +213,7 @@ private static string ReadResourceFile(Assembly assembly, string resourceName)
206213 using ( Stream stream = assembly . GetManifestResourceStream ( resourceName ) )
207214 using ( StreamReader reader = new StreamReader ( stream ) )
208215 {
209- return reader . ReadToEnd ( ) ;
216+ return reader . ReadToEnd ( ) ;
210217 }
211218 }
212219
0 commit comments