4 using System.Reflection;
5 using SiliconStudio.Core.Storage;
7 namespace SiliconStudio.Core.Serialization
13 var context = stream.Context;
15 if (objType.GetTypeInfo().IsValueType)
17 if (dataSerializer == null)
19 dataSerializer = context.SerializerSelector.GetSerializer(objType);
22 if (dataSerializer == null)
23 throw new ArgumentException(
"No serializer available for type " + objType.FullName);
27 dataSerializer.Serialize(ref obj, mode, stream);
36 if (
object.ReferenceEquals(obj, null))
49 if (dataSerializer == null)
51 dataSerializer = context.SerializerSelector.GetSerializer(objType);
54 if (dataSerializer == null)
55 throw new ArgumentException(
"No serializer available for type " + objType.FullName);
59 dataSerializer.PreSerialize(ref obj, mode, stream);
60 dataSerializer.Serialize(ref obj, mode, stream);
76 if (dataSerializer == null)
78 dataSerializer = context.SerializerSelector.GetSerializer(objType);
81 if (dataSerializer == null)
82 throw new ArgumentException(
"No serializer available for type " + objType.FullName);
86 dataSerializer.PreSerialize(ref obj, mode, stream);
89 dataSerializer.Serialize(ref obj, mode, stream);
110 if (
object.ReferenceEquals(obj, null))
124 dataSerializer.PreSerialize(ref obj, mode, stream);
125 dataSerializer.Serialize(ref obj, mode, stream);
142 dataSerializer.PreSerialize(ref obj, mode, stream);
145 dataSerializer.Serialize(ref obj, mode, stream);
154 var context = stream.Context;
158 if (dataSerializer == null)
160 dataSerializer = (
DataSerializer<T>)context.SerializerSelector.GetSerializer(typeof(T));
163 if (dataSerializer == null)
164 throw new ArgumentException(
"No serializer available for type " + typeof(T).FullName);
168 dataSerializer.Serialize(ref obj, mode, stream);
177 if (
object.ReferenceEquals(obj, null))
190 if (dataSerializer == null)
192 dataSerializer = (DataSerializer<T>)context.SerializerSelector.GetSerializer(typeof(T));
195 if (dataSerializer == null)
196 throw new ArgumentException(
"No serializer available for type " + typeof(T).FullName);
200 dataSerializer.PreSerialize(ref obj, mode, stream);
201 dataSerializer.Serialize(ref obj, mode, stream);
217 if (dataSerializer == null)
219 dataSerializer = (DataSerializer<T>)context.SerializerSelector.GetSerializer(typeof(T));
222 if (dataSerializer == null)
223 throw new ArgumentException(
"No serializer available for type " + typeof(T).FullName);
227 dataSerializer.PreSerialize(ref obj, mode, stream);
230 dataSerializer.Serialize(ref obj, mode, stream);
251 dataSerializer.Serialize(ref obj, mode, stream);
260 if (
object.ReferenceEquals(obj, null))
274 dataSerializer.PreSerialize(ref obj, mode, stream);
275 dataSerializer.Serialize(ref obj, mode, stream);
292 dataSerializer.PreSerialize(ref obj, mode, stream);
295 dataSerializer.Serialize(ref obj, mode, stream);
307 var context = stream.Context;
309 if (objType.GetTypeInfo().IsValueType)
311 if (dataSerializer == null)
313 dataSerializer = context.SerializerSelector.GetSerializer(objType);
316 if (dataSerializer == null)
317 throw new ArgumentException(
"No serializer available for type " + objType.FullName);
321 dataSerializer.Serialize(ref obj, mode, stream);
335 if (
object.ReferenceEquals(obj, null))
342 flags = SerializeClassFlags.None;
345 var expectedType = objType;
346 type = objType.GetTypeInfo().IsSealed ? expectedType : obj.GetType();
347 hasTypeInfo = type != expectedType;
348 objectDataSerializer = null;
352 objectDataSerializer = context.SerializerSelector.GetSerializer(type);
354 if (objectDataSerializer == null)
355 throw new ArgumentException(
"No serializer available for type " + type.FullName);
358 type = objectDataSerializer.SerializationType;
363 if (type == expectedType)
371 flags |= SerializeClassFlags.IsTypeInfo;
376 stream.Write((byte)flags);
385 objectDataSerializer.PreSerialize(ref obj, mode, stream);
386 objectDataSerializer.Serialize(ref obj, mode, stream);
390 if (dataSerializer == null)
392 dataSerializer = context.SerializerSelector.GetSerializer(expectedType);
395 if (dataSerializer == null)
396 throw new ArgumentException(
"No serializer available for type " + expectedType.FullName);
400 dataSerializer.PreSerialize(ref obj, mode, stream);
401 dataSerializer.Serialize(ref obj, mode, stream);
421 stream.Serialize((IntPtr)Interop.FixedOut(out serializationTypeId), ObjectId.HashSize);
423 objectDataSerializer = context.SerializerSelector.GetSerializer(ref serializationTypeId);
424 if (objectDataSerializer == null)
425 throw new ArgumentException(
"No serializer available for type id " + serializationTypeId +
" and base type " + objType.FullName);
427 objectDataSerializer.PreSerialize(ref obj, mode, stream);
430 objectDataSerializer.Serialize(ref obj, mode, stream);
434 if (dataSerializer == null)
436 dataSerializer = context.SerializerSelector.GetSerializer(objType);
439 if (dataSerializer == null)
440 throw new ArgumentException(
"No serializer available for type " + objType.FullName);
444 dataSerializer.PreSerialize(ref obj, mode, stream);
447 dataSerializer.Serialize(ref obj, mode, stream);
463 var context = stream.Context;
475 if (
object.ReferenceEquals(obj, null))
482 flags = SerializeClassFlags.None;
485 var expectedType = typeof(T);
486 type = isSealed ? expectedType : obj.GetType();
487 hasTypeInfo = type != expectedType;
488 objectDataSerializer = null;
492 objectDataSerializer = context.SerializerSelector.GetSerializer(type);
494 if (objectDataSerializer == null)
495 throw new ArgumentException(
"No serializer available for type " + type.FullName);
498 type = objectDataSerializer.SerializationType;
503 if (type == expectedType)
511 flags |= SerializeClassFlags.IsTypeInfo;
516 stream.Write((byte)flags);
526 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
527 objectDataSerializer.Serialize(ref objCopy, mode, stream);
533 dataSerializer.PreSerialize(ref obj, mode, stream);
534 dataSerializer.Serialize(ref obj, mode, stream);
554 stream.Serialize((IntPtr)Interop.FixedOut(out serializationTypeId), ObjectId.HashSize);
556 objectDataSerializer = context.SerializerSelector.GetSerializer(ref serializationTypeId);
557 if (objectDataSerializer == null)
558 throw new ArgumentException(
"No serializer available for type id " + serializationTypeId +
" and base type " + typeof(T).FullName);
561 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
564 objectDataSerializer.Serialize(ref objCopy, mode, stream);
570 dataSerializer.PreSerialize(ref obj, mode, stream);
573 dataSerializer.Serialize(ref obj, mode, stream);
582 var context = stream.Context;
586 if (dataSerializer == null)
588 dataSerializer = (
DataSerializer<T>)context.SerializerSelector.GetSerializer(typeof(T));
591 if (dataSerializer == null)
592 throw new ArgumentException(
"No serializer available for type " + typeof(T).FullName);
596 dataSerializer.Serialize(ref obj, mode, stream);
606 DataSerializer objectDataSerializer;
611 if (
object.ReferenceEquals(obj, null))
618 flags = SerializeClassFlags.None;
621 var expectedType = typeof(T);
622 type = isSealed ? expectedType : obj.GetType();
623 hasTypeInfo = type != expectedType;
624 objectDataSerializer = null;
628 objectDataSerializer = context.SerializerSelector.GetSerializer(type);
630 if (objectDataSerializer == null)
631 throw new ArgumentException(
"No serializer available for type " + type.FullName);
634 type = objectDataSerializer.SerializationType;
639 if (type == expectedType)
647 flags |= SerializeClassFlags.IsTypeInfo;
652 stream.Write((byte)flags);
657 fixed (
ObjectId* serializationTypeId = &objectDataSerializer.SerializationTypeId)
658 stream.Serialize((IntPtr)serializationTypeId,
ObjectId.HashSize);
662 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
663 objectDataSerializer.Serialize(ref objCopy, mode, stream);
668 if (dataSerializer == null)
670 dataSerializer = (DataSerializer<T>)context.SerializerSelector.GetSerializer(expectedType);
673 if (dataSerializer == null)
674 throw new ArgumentException(
"No serializer available for type " + expectedType.FullName);
678 dataSerializer.PreSerialize(ref obj, mode, stream);
679 dataSerializer.Serialize(ref obj, mode, stream);
699 stream.Serialize((IntPtr)Interop.FixedOut(out serializationTypeId), ObjectId.HashSize);
701 objectDataSerializer = context.SerializerSelector.GetSerializer(ref serializationTypeId);
702 if (objectDataSerializer == null)
703 throw new ArgumentException(
"No serializer available for type id " + serializationTypeId +
" and base type " + typeof(T).FullName);
706 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
709 objectDataSerializer.Serialize(ref objCopy, mode, stream);
714 if (dataSerializer == null)
716 dataSerializer = (DataSerializer<T>)context.SerializerSelector.GetSerializer(typeof(T));
719 if (dataSerializer == null)
720 throw new ArgumentException(
"No serializer available for type " + typeof(T).FullName);
724 dataSerializer.PreSerialize(ref obj, mode, stream);
727 dataSerializer.Serialize(ref obj, mode, stream);
743 var context = stream.Context;
749 dataSerializer.Serialize(ref obj, mode, stream);
764 if (
object.ReferenceEquals(obj, null))
771 flags = SerializeClassFlags.None;
774 var expectedType = typeof(T);
775 type = isSealed ? expectedType : obj.GetType();
776 hasTypeInfo = type != expectedType;
777 objectDataSerializer = null;
781 objectDataSerializer = context.SerializerSelector.GetSerializer(type);
783 if (objectDataSerializer == null)
784 throw new ArgumentException(
"No serializer available for type " + type.FullName);
787 type = objectDataSerializer.SerializationType;
792 if (type == expectedType)
800 flags |= SerializeClassFlags.IsTypeInfo;
805 stream.Write((byte)flags);
815 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
816 objectDataSerializer.Serialize(ref objCopy, mode, stream);
822 dataSerializer.PreSerialize(ref obj, mode, stream);
823 dataSerializer.Serialize(ref obj, mode, stream);
843 stream.Serialize((IntPtr)Interop.FixedOut(out serializationTypeId), ObjectId.HashSize);
845 objectDataSerializer = context.SerializerSelector.GetSerializer(ref serializationTypeId);
846 if (objectDataSerializer == null)
847 throw new ArgumentException(
"No serializer available for type id " + serializationTypeId +
" and base type " + typeof(T).FullName);
850 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
853 objectDataSerializer.Serialize(ref objCopy, mode, stream);
859 dataSerializer.PreSerialize(ref obj, mode, stream);
862 dataSerializer.Serialize(ref obj, mode, stream);
874 var context = stream.Context;
876 if (objType.GetTypeInfo().IsValueType)
878 if (dataSerializer == null)
880 dataSerializer = context.SerializerSelector.GetSerializer(objType);
883 if (dataSerializer == null)
884 throw new ArgumentException(
"No serializer available for type " + objType.FullName);
888 dataSerializer.Serialize(ref obj, mode, stream);
896 bool reuseReferences = context.SerializerSelector.ReuseReferences;
904 if (
object.ReferenceEquals(obj, null))
911 flags = SerializeClassFlags.None;
915 var objectReferences = context.Get(MemberSerializer.ObjectSerializeReferences);
916 if (objectReferences.TryGetValue(obj, out index))
919 flags |= SerializeClassFlags.IsReference;
920 stream.Write((byte)flags);
926 objectReferences.Add(obj, index = objectReferences.Count);
930 var expectedType = objType;
931 type = objType.GetTypeInfo().IsSealed ? expectedType : obj.GetType();
932 hasTypeInfo = type != expectedType;
933 objectDataSerializer = null;
937 objectDataSerializer = context.SerializerSelector.GetSerializer(type);
939 if (objectDataSerializer == null)
940 throw new ArgumentException(
"No serializer available for type " + type.FullName);
943 type = objectDataSerializer.SerializationType;
948 if (type == expectedType)
956 flags |= SerializeClassFlags.IsTypeInfo;
961 stream.Write((byte)flags);
974 objectDataSerializer.PreSerialize(ref obj, mode, stream);
975 objectDataSerializer.Serialize(ref obj, mode, stream);
979 if (dataSerializer == null)
981 dataSerializer = context.SerializerSelector.GetSerializer(expectedType);
984 if (dataSerializer == null)
985 throw new ArgumentException(
"No serializer available for type " + expectedType.FullName);
989 dataSerializer.PreSerialize(ref obj, mode, stream);
990 dataSerializer.Serialize(ref obj, mode, stream);
999 var objectReferences = reuseReferences ? context.Get(
MemberSerializer.ObjectDeserializeReferences) : null;
1000 bool isReference = (flags & SerializeClassFlags.IsReference) ==
SerializeClassFlags.IsReference;
1001 index = reuseReferences && !isNull ? stream.ReadInt32() : -1;
1008 else if (reuseReferences && isReference)
1010 obj = objectReferences[index];
1014 if (reuseReferences)
1016 if (objectReferences.Count != index)
1017 throw new InvalidOperationException(
"Serialization contentRef indices are out of sync.");
1018 objectReferences.Add(null);
1023 stream.Serialize((IntPtr)Interop.FixedOut(out serializationTypeId), ObjectId.HashSize);
1025 objectDataSerializer = context.SerializerSelector.GetSerializer(ref serializationTypeId);
1026 if (objectDataSerializer == null)
1027 throw new ArgumentException(
"No serializer available for type id " + serializationTypeId +
" and base type " + objType.FullName);
1029 objectDataSerializer.PreSerialize(ref obj, mode, stream);
1031 if (reuseReferences)
1034 objectReferences[index] = obj;
1037 objectDataSerializer.Serialize(ref obj, mode, stream);
1041 if (dataSerializer == null)
1043 dataSerializer = context.SerializerSelector.GetSerializer(objType);
1046 if (dataSerializer == null)
1047 throw new ArgumentException(
"No serializer available for type " + objType.FullName);
1051 dataSerializer.PreSerialize(ref obj, mode, stream);
1053 if (reuseReferences)
1056 objectReferences[index] = obj;
1059 dataSerializer.Serialize(ref obj, mode, stream);
1062 if (reuseReferences)
1065 objectReferences[index] = obj;
1080 var context = stream.Context;
1085 bool reuseReferences = context.SerializerSelector.ReuseReferences;
1094 if (
object.ReferenceEquals(obj, null))
1101 flags = SerializeClassFlags.None;
1103 if (reuseReferences)
1105 var objectReferences = context.Get(MemberSerializer.ObjectSerializeReferences);
1106 if (objectReferences.TryGetValue(obj, out index))
1109 flags |= SerializeClassFlags.IsReference;
1110 stream.Write((byte)flags);
1111 stream.Write(index);
1116 objectReferences.Add(obj, index = objectReferences.Count);
1120 var expectedType = typeof(T);
1121 type = isSealed ? expectedType : obj.GetType();
1122 hasTypeInfo = type != expectedType;
1123 objectDataSerializer = null;
1127 objectDataSerializer = context.SerializerSelector.GetSerializer(type);
1129 if (objectDataSerializer == null)
1130 throw new ArgumentException(
"No serializer available for type " + type.FullName);
1133 type = objectDataSerializer.SerializationType;
1138 if (type == expectedType)
1141 hasTypeInfo =
false;
1146 flags |= SerializeClassFlags.IsTypeInfo;
1151 stream.Write((byte)flags);
1154 if (reuseReferences)
1155 stream.Write(index);
1165 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
1166 objectDataSerializer.Serialize(ref objCopy, mode, stream);
1172 dataSerializer.PreSerialize(ref obj, mode, stream);
1173 dataSerializer.Serialize(ref obj, mode, stream);
1182 var objectReferences = reuseReferences ? context.Get(
MemberSerializer.ObjectDeserializeReferences) : null;
1183 bool isReference = (flags & SerializeClassFlags.IsReference) ==
SerializeClassFlags.IsReference;
1184 index = reuseReferences && !isNull ? stream.ReadInt32() : -1;
1191 else if (reuseReferences && isReference)
1193 obj = (T)objectReferences[index];
1197 if (reuseReferences)
1199 if (objectReferences.Count != index)
1200 throw new InvalidOperationException(
"Serialization contentRef indices are out of sync.");
1201 objectReferences.Add(null);
1206 stream.Serialize((IntPtr)Interop.FixedOut(out serializationTypeId), ObjectId.HashSize);
1208 objectDataSerializer = context.SerializerSelector.GetSerializer(ref serializationTypeId);
1209 if (objectDataSerializer == null)
1210 throw new ArgumentException(
"No serializer available for type id " + serializationTypeId +
" and base type " + typeof(T).FullName);
1213 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
1215 if (reuseReferences)
1218 objectReferences[index] = objCopy;
1221 objectDataSerializer.Serialize(ref objCopy, mode, stream);
1227 dataSerializer.PreSerialize(ref obj, mode, stream);
1229 if (reuseReferences)
1232 objectReferences[index] = obj;
1235 dataSerializer.Serialize(ref obj, mode, stream);
1238 if (reuseReferences)
1241 objectReferences[index] = obj;
1249 var context = stream.Context;
1253 if (dataSerializer == null)
1255 dataSerializer = (
DataSerializer<T>)context.SerializerSelector.GetSerializer(typeof(T));
1258 if (dataSerializer == null)
1259 throw new ArgumentException(
"No serializer available for type " + typeof(T).FullName);
1263 dataSerializer.Serialize(ref obj, mode, stream);
1271 bool reuseReferences = context.SerializerSelector.ReuseReferences;
1275 DataSerializer objectDataSerializer;
1280 if (
object.ReferenceEquals(obj, null))
1287 flags = SerializeClassFlags.None;
1289 if (reuseReferences)
1291 var objectReferences = context.Get(MemberSerializer.ObjectSerializeReferences);
1292 if (objectReferences.TryGetValue(obj, out index))
1295 flags |= SerializeClassFlags.IsReference;
1296 stream.Write((byte)flags);
1297 stream.Write(index);
1302 objectReferences.Add(obj, index = objectReferences.Count);
1306 var expectedType = typeof(T);
1307 type = isSealed ? expectedType : obj.GetType();
1308 hasTypeInfo = type != expectedType;
1309 objectDataSerializer = null;
1313 objectDataSerializer = context.SerializerSelector.GetSerializer(type);
1315 if (objectDataSerializer == null)
1316 throw new ArgumentException(
"No serializer available for type " + type.FullName);
1319 type = objectDataSerializer.SerializationType;
1324 if (type == expectedType)
1327 hasTypeInfo =
false;
1332 flags |= SerializeClassFlags.IsTypeInfo;
1337 stream.Write((byte)flags);
1340 if (reuseReferences)
1341 stream.Write(index);
1346 fixed (
ObjectId* serializationTypeId = &objectDataSerializer.SerializationTypeId)
1347 stream.Serialize((IntPtr)serializationTypeId,
ObjectId.HashSize);
1351 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
1352 objectDataSerializer.Serialize(ref objCopy, mode, stream);
1357 if (dataSerializer == null)
1359 dataSerializer = (DataSerializer<T>)context.SerializerSelector.GetSerializer(expectedType);
1362 if (dataSerializer == null)
1363 throw new ArgumentException(
"No serializer available for type " + expectedType.FullName);
1367 dataSerializer.PreSerialize(ref obj, mode, stream);
1368 dataSerializer.Serialize(ref obj, mode, stream);
1377 var objectReferences = reuseReferences ? context.Get(MemberSerializer.ObjectDeserializeReferences) : null;
1378 bool isReference = (flags & SerializeClassFlags.IsReference) ==
SerializeClassFlags.IsReference;
1379 index = reuseReferences && !isNull ? stream.ReadInt32() : -1;
1386 else if (reuseReferences && isReference)
1388 obj = (
T)objectReferences[index];
1392 if (reuseReferences)
1394 if (objectReferences.Count != index)
1395 throw new InvalidOperationException(
"Serialization contentRef indices are out of sync.");
1396 objectReferences.Add(null);
1401 stream.Serialize((IntPtr)Interop.FixedOut(out serializationTypeId), ObjectId.HashSize);
1403 objectDataSerializer = context.SerializerSelector.GetSerializer(ref serializationTypeId);
1404 if (objectDataSerializer == null)
1405 throw new ArgumentException(
"No serializer available for type id " + serializationTypeId +
" and base type " + typeof(T).FullName);
1408 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
1410 if (reuseReferences)
1413 objectReferences[index] = objCopy;
1416 objectDataSerializer.Serialize(ref objCopy, mode, stream);
1421 if (dataSerializer == null)
1423 dataSerializer = (DataSerializer<T>)context.SerializerSelector.GetSerializer(typeof(T));
1426 if (dataSerializer == null)
1427 throw new ArgumentException(
"No serializer available for type " + typeof(T).FullName);
1431 dataSerializer.PreSerialize(ref obj, mode, stream);
1433 if (reuseReferences)
1436 objectReferences[index] = obj;
1439 dataSerializer.Serialize(ref obj, mode, stream);
1442 if (reuseReferences)
1445 objectReferences[index] = obj;
1460 var context = stream.Context;
1466 dataSerializer.Serialize(ref obj, mode, stream);
1474 bool reuseReferences = context.SerializerSelector.ReuseReferences;
1483 if (
object.ReferenceEquals(obj, null))
1490 flags = SerializeClassFlags.None;
1492 if (reuseReferences)
1494 var objectReferences = context.Get(MemberSerializer.ObjectSerializeReferences);
1495 if (objectReferences.TryGetValue(obj, out index))
1498 flags |= SerializeClassFlags.IsReference;
1499 stream.Write((byte)flags);
1500 stream.Write(index);
1505 objectReferences.Add(obj, index = objectReferences.Count);
1509 var expectedType = typeof(T);
1510 type = isSealed ? expectedType : obj.GetType();
1511 hasTypeInfo = type != expectedType;
1512 objectDataSerializer = null;
1516 objectDataSerializer = context.SerializerSelector.GetSerializer(type);
1518 if (objectDataSerializer == null)
1519 throw new ArgumentException(
"No serializer available for type " + type.FullName);
1522 type = objectDataSerializer.SerializationType;
1527 if (type == expectedType)
1530 hasTypeInfo =
false;
1535 flags |= SerializeClassFlags.IsTypeInfo;
1540 stream.Write((byte)flags);
1543 if (reuseReferences)
1544 stream.Write(index);
1554 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
1555 objectDataSerializer.Serialize(ref objCopy, mode, stream);
1561 dataSerializer.PreSerialize(ref obj, mode, stream);
1562 dataSerializer.Serialize(ref obj, mode, stream);
1571 var objectReferences = reuseReferences ? context.Get(
MemberSerializer.ObjectDeserializeReferences) : null;
1572 bool isReference = (flags & SerializeClassFlags.IsReference) ==
SerializeClassFlags.IsReference;
1573 index = reuseReferences && !isNull ? stream.ReadInt32() : -1;
1580 else if (reuseReferences && isReference)
1582 obj = (T)objectReferences[index];
1586 if (reuseReferences)
1588 if (objectReferences.Count != index)
1589 throw new InvalidOperationException(
"Serialization contentRef indices are out of sync.");
1590 objectReferences.Add(null);
1595 stream.Serialize((IntPtr)Interop.FixedOut(out serializationTypeId), ObjectId.HashSize);
1597 objectDataSerializer = context.SerializerSelector.GetSerializer(ref serializationTypeId);
1598 if (objectDataSerializer == null)
1599 throw new ArgumentException(
"No serializer available for type id " + serializationTypeId +
" and base type " + typeof(T).FullName);
1602 objectDataSerializer.PreSerialize(ref objCopy, mode, stream);
1604 if (reuseReferences)
1607 objectReferences[index] = objCopy;
1610 objectDataSerializer.Serialize(ref objCopy, mode, stream);
1616 dataSerializer.PreSerialize(ref obj, mode, stream);
1618 if (reuseReferences)
1621 objectReferences[index] = obj;
1624 dataSerializer.Serialize(ref obj, mode, stream);
1627 if (reuseReferences)
1630 objectReferences[index] = obj;
MemberNullableSerializerObject(DataSerializer< T > dataSerializer)
MemberReuseSerializerObject(DataSerializer< T > dataSerializer)
MemberNullableSerializer(DataSerializer< T > dataSerializer)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ DXGI_FORMAT _In_ DWORD flags
override void Serialize(ref T obj, ArchiveMode mode, SerializationStream stream)
MemberNonSealedSerializer(DataSerializer< T > dataSerializer)
MemberReuseSerializer(DataSerializer< T > dataSerializer)
override void Serialize(ref T obj, ArchiveMode mode, SerializationStream stream)
static void SerializeExtended(SerializationStream stream, Type objType, ref object obj, ArchiveMode mode, DataSerializer dataSerializer=null)
ObjectId SerializationTypeId
Base class for implementation of SerializationStream.
override void Serialize(ref T obj, ArchiveMode mode, SerializationStream stream)
static void SerializeExtended(SerializationStream stream, Type objType, ref object obj, ArchiveMode mode, DataSerializer dataSerializer=null)
override void Serialize(ref T obj, ArchiveMode mode, SerializationStream stream)
static void SerializeExtended(SerializationStream stream, Type objType, ref object obj, ArchiveMode mode, DataSerializer dataSerializer=null)
override void Serialize(ref T obj, ArchiveMode mode, SerializationStream stream)
SerializeClassFlags
Specifies flags used when serializing reference types.
A hash to uniquely identify data.
Describes how to serialize and deserialize an object without knowing its type. Used as a common base ...
ArchiveMode
Enumerates the different mode of serialization (either serialization or deserialization).
Describes how to serialize and deserialize an object of a given type.
MemberNonSealedSerializerObject(DataSerializer< T > dataSerializer)
override void Serialize(ref T obj, ArchiveMode mode, SerializationStream stream)