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

◆ InternalConvert()

void System.Runtime.Serialization.CodeGenerator.InternalConvert ( Type source,
Type target,
bool isAddress )
inlineprivate

Definition at line 1457 of file CodeGenerator.cs.

1458 {
1459 if (target == source)
1460 {
1461 return;
1462 }
1463 if (target.IsValueType)
1464 {
1465 if (source.IsValueType)
1466 {
1467 OpCode convOpCode = GetConvOpCode(target.GetTypeCode());
1468 if (convOpCode.Equals(OpCodes.Nop))
1469 {
1470 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.SR.Format(System.SR.NoConversionPossibleTo, DataContract.GetClrTypeFullName(target))));
1471 }
1472 if (_codeGenTrace != 0)
1473 {
1475 }
1477 }
1478 else
1479 {
1480 if (!source.IsAssignableFrom(target))
1481 {
1482 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.SR.Format(System.SR.IsNotAssignableFrom, DataContract.GetClrTypeFullName(target), DataContract.GetClrTypeFullName(source))));
1483 }
1484 Unbox(target);
1485 if (!isAddress)
1486 {
1487 Ldobj(target);
1488 }
1489 }
1490 }
1491 else if (target.IsAssignableFrom(source))
1492 {
1493 if (source.IsValueType)
1494 {
1495 if (isAddress)
1496 {
1497 Ldobj(source);
1498 }
1499 Box(source);
1500 }
1501 }
1502 else if (source.IsAssignableFrom(target))
1503 {
1504 Castclass(target);
1505 }
1506 else
1507 {
1508 if (!target.IsInterface && !source.IsInterface)
1509 {
1510 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.SR.Format(System.SR.IsNotAssignableFrom, DataContract.GetClrTypeFullName(target), DataContract.GetClrTypeFullName(source))));
1511 }
1512 Castclass(target);
1513 }
1514 }
virtual void Emit(OpCode opcode)
static readonly OpCode Nop
Definition OpCodes.cs:5
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string IsNotAssignableFrom
Definition SR.cs:176
static string NoConversionPossibleTo
Definition SR.cs:212
Definition SR.cs:7

References System.Runtime.Serialization.CodeGenerator._codeGenTrace, System.Runtime.Serialization.CodeGenerator._ilGen, System.Reflection.Emit.Box, System.Reflection.Emit.Castclass, System.Runtime.Serialization.XmlObjectSerializer.CreateSerializationException(), System.Reflection.Emit.ILGenerator.Emit(), System.Runtime.Serialization.CodeGenerator.EmitSourceInstruction(), System.SR.Format(), System.Runtime.Serialization.DataContract.GetClrTypeFullName(), System.Runtime.Serialization.CodeGenerator.GetConvOpCode(), System.Type.GetTypeCode(), System.Type.IsAssignableFrom(), System.Type.IsInterface, System.SR.IsNotAssignableFrom, System.Type.IsValueType, System.Reflection.Emit.Ldobj, System.SR.NoConversionPossibleTo, System.Reflection.Emit.OpCodes.Nop, System.source, System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(), and System.Reflection.Emit.Unbox.

Referenced by System.Runtime.Serialization.CodeGenerator.ConvertAddress(), and System.Runtime.Serialization.CodeGenerator.ConvertValue().