Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ MarshalHelperCastVariant()

static void System.Variant.MarshalHelperCastVariant ( object pValue,
int vt,
ref Variant v )
inlinestaticpackage

Definition at line 380 of file Variant.cs.

381 {
382 if (!(pValue is IConvertible convertible))
383 {
384 switch (vt)
385 {
386 case 9:
387 v = new Variant(new DispatchWrapper(pValue));
388 return;
389 case 12:
390 v = new Variant(pValue);
391 return;
392 case 13:
393 v = new Variant(new UnknownWrapper(pValue));
394 return;
395 case 36:
396 v = new Variant(pValue);
397 return;
398 case 8:
399 if (pValue == null)
400 {
401 v = new Variant(null)
402 {
403 _flags = 14
404 };
405 return;
406 }
407 break;
408 }
409 throw new InvalidCastException(SR.InvalidCast_CannotCoerceByRefVariant);
410 }
411 IFormatProvider invariantCulture = CultureInfo.InvariantCulture;
412 v = vt switch
413 {
414 0 => Empty,
415 1 => DBNull,
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)),
420 6 => new Variant(new CurrencyWrapper(convertible.ToDecimal(invariantCulture))),
421 7 => new Variant(convertible.ToDateTime(invariantCulture)),
422 8 => new Variant(convertible.ToString(invariantCulture)),
423 9 => new Variant(new DispatchWrapper(convertible)),
424 10 => new Variant(new ErrorWrapper(convertible.ToInt32(invariantCulture))),
425 11 => new Variant(convertible.ToBoolean(invariantCulture)),
426 12 => new Variant(convertible),
427 13 => new Variant(new UnknownWrapper(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
Definition Variant.cs:117
Variant(int flags, object or, long data)
Definition Variant.cs:128
static readonly Variant DBNull
Definition Variant.cs:121

References System.Variant.Variant(), System.Variant._flags, System.Variant.DBNull, System.Variant.Empty, System.SR.InvalidCast_CannotCoerceByRefVariant, and System.Globalization.CultureInfo.InvariantCulture.