381 {
382 if (!(pValue is IConvertible convertible))
383 {
384 switch (vt)
385 {
386 case 9:
388 return;
389 case 12:
391 return;
392 case 13:
394 return;
395 case 36:
397 return;
398 case 8:
399 if (pValue == null)
400 {
402 {
404 };
405 return;
406 }
407 break;
408 }
409 throw new InvalidCastException(SR.InvalidCast_CannotCoerceByRefVariant);
410 }
412 v = vt switch
413 {
416 2 =>
new Variant(convertible.ToInt16(invariantCulture)),
417 3 =>
new Variant(convertible.ToInt32(invariantCulture)),
418 4 =>
new Variant(convertible.ToSingle(invariantCulture)),
419 5 =>
new Variant(convertible.ToDouble(invariantCulture)),
421 7 =>
new Variant(convertible.ToDateTime(invariantCulture)),
422 8 =>
new Variant(convertible.ToString(invariantCulture)),
425 11 =>
new Variant(convertible.ToBoolean(invariantCulture)),
426 12 =>
new Variant(convertible),
428 14 =>
new Variant(convertible.ToDecimal(invariantCulture)),
429 16 =>
new Variant(convertible.ToSByte(invariantCulture)),
430 17 =>
new Variant(convertible.ToByte(invariantCulture)),
431 18 =>
new Variant(convertible.ToUInt16(invariantCulture)),
432 19 =>
new Variant(convertible.ToUInt32(invariantCulture)),
433 20 =>
new Variant(convertible.ToInt64(invariantCulture)),
434 21 =>
new Variant(convertible.ToUInt64(invariantCulture)),
435 22 =>
new Variant(convertible.ToInt32(invariantCulture)),
436 23 =>
new Variant(convertible.ToUInt32(invariantCulture)),
437 _ => throw new InvalidCastException(SR.InvalidCast_CannotCoerceByRefVariant),
438 };
439 }
static CultureInfo InvariantCulture
static readonly Variant Empty
Variant(int flags, object or, long data)
static readonly Variant DBNull