77using Microsoft . Management . Infrastructure . Internal . Data ;
88using Microsoft . Management . Infrastructure . Native ;
99using System ;
10+ using System . Collections ;
1011using System . Globalization ;
1112
1213namespace Microsoft . Management . Infrastructure
@@ -105,7 +106,13 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
105106 if ( value == null ) return null ;
106107
107108 MI_Value miv = new MI_Value ( ) ;
108- var arrayOfObjects = value as object [ ] ;
109+ var count = 0 ;
110+ IList arrayOfObjects = null ;
111+ if ( value . GetType ( ) . IsArray )
112+ {
113+ arrayOfObjects = ( IList ) value ;
114+ count = arrayOfObjects . Count ;
115+ }
109116 switch ( cimType )
110117 {
111118 case CimType . Boolean :
@@ -172,8 +179,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
172179 case CimType . BooleanArray :
173180 if ( arrayOfObjects != null )
174181 {
175- Boolean [ ] array = new Boolean [ arrayOfObjects . Length ] ;
176- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
182+ Boolean [ ] array = new Boolean [ count ] ;
183+ for ( int i = 0 ; i < count ; i ++ )
177184 {
178185 array [ i ] = Convert . ToBoolean ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
179186 }
@@ -185,8 +192,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
185192 case CimType . Char16Array :
186193 if ( arrayOfObjects != null )
187194 {
188- Char [ ] array = new Char [ arrayOfObjects . Length ] ;
189- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
195+ Char [ ] array = new Char [ count ] ;
196+ for ( int i = 0 ; i < count ; i ++ )
190197 {
191198 array [ i ] = Convert . ToChar ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
192199 }
@@ -198,8 +205,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
198205 case CimType . Real32Array :
199206 if ( arrayOfObjects != null )
200207 {
201- Single [ ] array = new Single [ arrayOfObjects . Length ] ;
202- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
208+ Single [ ] array = new Single [ count ] ;
209+ for ( int i = 0 ; i < count ; i ++ )
203210 {
204211 array [ i ] = Convert . ToSingle ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
205212 }
@@ -211,8 +218,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
211218 case CimType . Real64Array :
212219 if ( arrayOfObjects != null )
213220 {
214- Double [ ] array = new Double [ arrayOfObjects . Length ] ;
215- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
221+ Double [ ] array = new Double [ count ] ;
222+ for ( int i = 0 ; i < count ; i ++ )
216223 {
217224 array [ i ] = Convert . ToDouble ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
218225 }
@@ -224,8 +231,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
224231 case CimType . SInt16Array :
225232 if ( arrayOfObjects != null )
226233 {
227- Int16 [ ] array = new Int16 [ arrayOfObjects . Length ] ;
228- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
234+ Int16 [ ] array = new Int16 [ count ] ;
235+ for ( int i = 0 ; i < count ; i ++ )
229236 {
230237 array [ i ] = Convert . ToInt16 ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
231238 }
@@ -237,8 +244,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
237244 case CimType . SInt32Array :
238245 if ( arrayOfObjects != null )
239246 {
240- Int32 [ ] array = new Int32 [ arrayOfObjects . Length ] ;
241- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
247+ Int32 [ ] array = new Int32 [ count ] ;
248+ for ( int i = 0 ; i < count ; i ++ )
242249 {
243250 array [ i ] = Convert . ToInt32 ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
244251 }
@@ -250,8 +257,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
250257 case CimType . SInt64Array :
251258 if ( arrayOfObjects != null )
252259 {
253- Int64 [ ] array = new Int64 [ arrayOfObjects . Length ] ;
254- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
260+ Int64 [ ] array = new Int64 [ count ] ;
261+ for ( int i = 0 ; i < count ; i ++ )
255262 {
256263 array [ i ] = Convert . ToInt64 ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
257264 }
@@ -263,8 +270,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
263270 case CimType . SInt8Array :
264271 if ( arrayOfObjects != null )
265272 {
266- SByte [ ] array = new SByte [ arrayOfObjects . Length ] ;
267- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
273+ SByte [ ] array = new SByte [ count ] ;
274+ for ( int i = 0 ; i < count ; i ++ )
268275 {
269276 array [ i ] = Convert . ToSByte ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
270277 }
@@ -276,8 +283,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
276283 case CimType . StringArray :
277284 if ( arrayOfObjects != null )
278285 {
279- String [ ] array = new String [ arrayOfObjects . Length ] ;
280- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
286+ String [ ] array = new String [ count ] ;
287+ for ( int i = 0 ; i < count ; i ++ )
281288 {
282289 if ( arrayOfObjects [ i ] is Boolean )
283290 {
@@ -300,8 +307,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
300307 case CimType . UInt16Array :
301308 if ( arrayOfObjects != null )
302309 {
303- UInt16 [ ] array = new UInt16 [ arrayOfObjects . Length ] ;
304- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
310+ UInt16 [ ] array = new UInt16 [ count ] ;
311+ for ( int i = 0 ; i < count ; i ++ )
305312 {
306313 array [ i ] = Convert . ToUInt16 ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
307314 }
@@ -313,8 +320,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
313320 case CimType . UInt32Array :
314321 if ( arrayOfObjects != null )
315322 {
316- UInt32 [ ] array = new UInt32 [ arrayOfObjects . Length ] ;
317- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
323+ UInt32 [ ] array = new UInt32 [ count ] ;
324+ for ( int i = 0 ; i < count ; i ++ )
318325 {
319326 array [ i ] = Convert . ToUInt32 ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
320327 }
@@ -326,8 +333,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
326333 case CimType . UInt64Array :
327334 if ( arrayOfObjects != null )
328335 {
329- UInt64 [ ] array = new UInt64 [ arrayOfObjects . Length ] ;
330- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
336+ UInt64 [ ] array = new UInt64 [ count ] ;
337+ for ( int i = 0 ; i < count ; i ++ )
331338 {
332339 array [ i ] = Convert . ToUInt64 ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
333340 }
@@ -339,8 +346,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
339346 case CimType . UInt8Array :
340347 if ( arrayOfObjects != null )
341348 {
342- Byte [ ] array = new Byte [ arrayOfObjects . Length ] ;
343- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
349+ Byte [ ] array = new Byte [ count ] ;
350+ for ( int i = 0 ; i < count ; i ++ )
344351 {
345352 array [ i ] = Convert . ToByte ( arrayOfObjects [ i ] , CultureInfo . InvariantCulture ) ;
346353 }
@@ -356,8 +363,8 @@ internal static MI_Value ConvertToNativeLayer(object value, CimType cimType)
356363 case CimType . DateTimeArray :
357364 if ( arrayOfObjects != null )
358365 {
359- MI_Datetime [ ] array = new MI_Datetime [ arrayOfObjects . Length ] ;
360- for ( int i = 0 ; i < arrayOfObjects . Length ; i ++ )
366+ MI_Datetime [ ] array = new MI_Datetime [ count ] ;
367+ for ( int i = 0 ; i < count ; i ++ )
361368 {
362369 array [ i ] = MI_Datetime . ConvertToDateTime ( arrayOfObjects [ i ] ) ;
363370 }
0 commit comments