Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlSerializer.cs
Go to the documentation of this file.
5using System.IO;
8
10
11public class XmlSerializer
12{
13 private sealed class XmlSerializerMappingKey
14 {
16
21
22 public override bool Equals([NotNullWhen(true)] object obj)
23 {
25 {
26 return false;
27 }
28 if (Mapping.Key != xmlSerializerMappingKey.Mapping.Key)
29 {
30 return false;
31 }
32 if (Mapping.ElementName != xmlSerializerMappingKey.Mapping.ElementName)
33 {
34 return false;
35 }
36 if (Mapping.Namespace != xmlSerializerMappingKey.Mapping.Namespace)
37 {
38 return false;
39 }
40 if (Mapping.IsSoap != xmlSerializerMappingKey.Mapping.IsSoap)
41 {
42 return false;
43 }
44 return true;
45 }
46
47 public override int GetHashCode()
48 {
49 int num = ((!Mapping.IsSoap) ? 1 : 0);
50 if (Mapping.Key != null)
51 {
52 num ^= Mapping.Key.GetHashCode();
53 }
54 if (Mapping.ElementName != null)
55 {
56 num ^= Mapping.ElementName.GetHashCode();
57 }
58 if (Mapping.Namespace != null)
59 {
60 num ^= Mapping.Namespace.GetHashCode();
61 }
62 return num;
63 }
64 }
65
66 private static SerializationMode s_mode = SerializationMode.ReflectionAsBackup;
67
69
70 private bool _typedSerializer;
71
72 private readonly Type _primitiveType;
73
75
77
78 internal string DefaultNamespace;
79
80 private Type _rootType;
81
83
84 private static readonly TempAssemblyCache s_cache = new TempAssemblyCache();
85
87
88 internal const string TrimSerializationWarning = "Members from serialized types may be trimmed if not referenced directly";
89
90 private const string TrimDeserializationWarning = "Members from deserialized types may be trimmed if not referenced directly";
91
93
94 internal static SerializationMode Mode
95 {
96 get
97 {
99 {
100 return SerializationMode.ReflectionOnly;
101 }
102 return s_mode;
103 }
104 set
105 {
106 s_mode = value;
107 }
108 }
109
110 private static bool ReflectionMethodEnabled
111 {
112 get
113 {
114 if (Mode != SerializationMode.ReflectionOnly)
115 {
116 return Mode == SerializationMode.ReflectionAsBackup;
117 }
118 return true;
119 }
120 }
121
123 {
124 get
125 {
126 if (s_defaultNamespaces == null)
127 {
129 xmlSerializerNamespaces.AddInternal("xsi", "http://www.w3.org/2001/XMLSchema-instance");
130 xmlSerializerNamespaces.AddInternal("xsd", "http://www.w3.org/2001/XMLSchema");
131 if (s_defaultNamespaces == null)
132 {
134 }
135 }
136 return s_defaultNamespaces;
137 }
138 }
139
140 public event XmlNodeEventHandler UnknownNode
141 {
142 add
143 {
146 }
147 remove
148 {
151 }
152 }
153
154 public event XmlAttributeEventHandler UnknownAttribute
155 {
156 add
157 {
160 }
161 remove
162 {
165 }
166 }
167
168 public event XmlElementEventHandler UnknownElement
169 {
170 add
171 {
174 }
175 remove
176 {
179 }
180 }
181
182 public event UnreferencedObjectEventHandler UnreferencedObject
183 {
184 add
185 {
188 }
189 remove
190 {
193 }
194 }
195
196 protected XmlSerializer()
197 {
198 }
199
200 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
202 : this(type, overrides, extraTypes, root, defaultNamespace, null)
203 {
204 }
205
206 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
208 : this(type, null, Type.EmptyTypes, root, null, null)
209 {
210 }
211
212 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
215 {
216 }
217
218 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
223
224 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
226 {
227 if (xmlTypeMapping == null)
228 {
229 throw new ArgumentNullException("xmlTypeMapping");
230 }
231 if (Mode != SerializationMode.ReflectionOnly)
232 {
234 }
236 }
237
238 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
240 : this(type, (string?)null)
241 {
242 }
243
244 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
245 public XmlSerializer(Type type, string? defaultNamespace)
246 {
247 if (type == null)
248 {
249 throw new ArgumentNullException("type");
250 }
251 DefaultNamespace = defaultNamespace;
252 _rootType = type;
253 _mapping = GetKnownMapping(type, defaultNamespace);
254 if (_mapping != null)
255 {
257 }
258 else
259 {
260 if (Mode == SerializationMode.ReflectionOnly)
261 {
262 return;
263 }
264 _tempAssembly = s_cache[defaultNamespace, type];
265 if (_tempAssembly == null)
266 {
267 lock (s_cache)
268 {
269 _tempAssembly = s_cache[defaultNamespace, type];
270 if (_tempAssembly == null)
271 {
274 if (assembly == null)
275 {
276 if (Mode == SerializationMode.PreGenOnly)
277 {
278 AssemblyName name = type.Assembly.GetName();
279 string tempAssemblyName = Compiler.GetTempAssemblyName(name, defaultNamespace);
281 }
283 _mapping = xmlReflectionImporter.ImportTypeMapping(type, null, defaultNamespace);
284 _tempAssembly = GenerateTempAssembly(_mapping, type, defaultNamespace);
285 }
286 else
287 {
290 }
291 }
292 s_cache.Add(defaultNamespace, type, _tempAssembly);
293 }
294 }
295 if (_mapping == null)
296 {
298 }
299 }
300 }
301
302 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
303 public XmlSerializer(Type type, XmlAttributeOverrides? overrides, Type[]? extraTypes, XmlRootAttribute? root, string? defaultNamespace, string? location)
304 {
305 if (type == null)
306 {
307 throw new ArgumentNullException("type");
308 }
309 DefaultNamespace = defaultNamespace;
310 _rootType = type;
311 _mapping = GenerateXmlTypeMapping(type, overrides, extraTypes, root, defaultNamespace);
312 if (Mode != SerializationMode.ReflectionOnly)
313 {
315 }
316 }
317
318 [RequiresUnreferencedCode("calls ImportTypeMapping")]
320 {
322 if (extraTypes != null)
323 {
324 for (int i = 0; i < extraTypes.Length; i++)
325 {
326 xmlReflectionImporter.IncludeType(extraTypes[i]);
327 }
328 }
329 return xmlReflectionImporter.ImportTypeMapping(type, root, defaultNamespace);
330 }
331
332 [RequiresUnreferencedCode("creates TempAssembly")]
334 {
335 return GenerateTempAssembly(xmlMapping, null, null);
336 }
337
338 [RequiresUnreferencedCode("creates TempAssembly")]
339 internal static TempAssembly GenerateTempAssembly(XmlMapping xmlMapping, Type type, string defaultNamespace)
340 {
341 return GenerateTempAssembly(xmlMapping, type, defaultNamespace, null);
342 }
343
344 [RequiresUnreferencedCode("creates TempAssembly")]
345 internal static TempAssembly GenerateTempAssembly(XmlMapping xmlMapping, Type type, string defaultNamespace, string location)
346 {
347 if (xmlMapping == null)
348 {
349 throw new ArgumentNullException("xmlMapping");
350 }
351 xmlMapping.CheckShallow();
352 if (xmlMapping.IsSoap)
353 {
354 return null;
355 }
356 return new TempAssembly(new XmlMapping[1] { xmlMapping }, new Type[1] { type }, defaultNamespace, location);
357 }
358
359 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
360 public void Serialize(TextWriter textWriter, object? o)
361 {
362 Serialize(textWriter, o, null);
363 }
364
365 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
371
372 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
373 public void Serialize(Stream stream, object? o)
374 {
375 Serialize(stream, o, null);
376 }
377
378 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
384
385 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
386 public void Serialize(XmlWriter xmlWriter, object? o)
387 {
388 Serialize(xmlWriter, o, null);
389 }
390
391 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
396
397 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
402
403 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
404 public void Serialize(XmlWriter xmlWriter, object? o, XmlSerializerNamespaces? namespaces, string? encodingStyle, string? id)
405 {
406 try
407 {
408 if (_primitiveType != null)
409 {
410 if (encodingStyle != null && encodingStyle.Length > 0)
411 {
413 }
415 }
417 {
419 }
420 else if (_tempAssembly == null || _typedSerializer)
421 {
424 try
425 {
427 }
428 finally
429 {
430 xmlSerializationWriter.Dispose();
431 }
432 }
433 else
434 {
436 }
437 }
439 {
441 {
442 innerException = innerException.InnerException;
443 }
445 }
446 xmlWriter.Flush();
447 }
448
449 [RequiresUnreferencedCode("calls GetMapping")]
456
457 [RequiresUnreferencedCode("calls GenerateXmlTypeMapping")]
459 {
460 if (_mapping == null || !_mapping.GenerateSerializer)
461 {
463 }
464 return _mapping;
465 }
466
467 [RequiresUnreferencedCode("Members from deserialized types may be trimmed if not referenced directly")]
468 public object? Deserialize(Stream stream)
469 {
471 {
472 IgnoreWhitespace = true
473 });
474 return Deserialize(xmlReader, null);
475 }
476
477 [RequiresUnreferencedCode("Members from deserialized types may be trimmed if not referenced directly")]
478 public object? Deserialize(TextReader textReader)
479 {
480 XmlTextReader xmlTextReader = new XmlTextReader(textReader);
484 return Deserialize(xmlTextReader, null);
485 }
486
487 [RequiresUnreferencedCode("Members from deserialized types may be trimmed if not referenced directly")]
489 {
490 return Deserialize(xmlReader, null);
491 }
492
493 [RequiresUnreferencedCode("Members from deserialized types may be trimmed if not referenced directly")]
495 {
496 return Deserialize(xmlReader, null, events);
497 }
498
499 [RequiresUnreferencedCode("Members from deserialized types may be trimmed if not referenced directly")]
501 {
503 }
504
505 [RequiresUnreferencedCode("Members from deserialized types may be trimmed if not referenced directly")]
507 {
508 events.sender = this;
509 try
510 {
511 if (_primitiveType != null)
512 {
513 if (encodingStyle != null && encodingStyle.Length > 0)
514 {
516 }
517 return DeserializePrimitive(xmlReader, events);
518 }
520 {
522 }
523 if (_tempAssembly == null || _typedSerializer)
524 {
527 try
528 {
530 }
531 finally
532 {
533 xmlSerializationReader.Dispose();
534 }
535 }
537 }
539 {
541 {
542 innerException = innerException.InnerException;
543 }
545 {
548 }
550 }
551 }
552
553 [RequiresUnreferencedCode("calls GetMapping")]
560
562 {
563 if (Mode != SerializationMode.ReflectionOnly)
564 {
565 return mapping?.IsSoap ?? false;
566 }
567 return true;
568 }
569
570 public virtual bool CanDeserialize(XmlReader xmlReader)
571 {
572 if (_primitiveType != null)
573 {
575 return xmlReader.IsStartElement(typeDesc.DataType.Name, string.Empty);
576 }
578 {
579 return true;
580 }
581 if (_tempAssembly != null)
582 {
584 }
585 return false;
586 }
587
588 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
590 {
591 return FromMappings(mappings, null);
592 }
593
594 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
596 {
597 if (mappings == null || mappings.Length == 0)
598 {
599 return Array.Empty<XmlSerializer>();
600 }
601 bool flag = false;
602 foreach (XmlMapping xmlMapping in mappings)
603 {
604 if (xmlMapping.IsSoap)
605 {
606 flag = true;
607 }
608 }
609 if ((flag && ReflectionMethodEnabled) || Mode == SerializationMode.ReflectionOnly)
610 {
612 }
616 if (assembly == null)
617 {
618 if (Mode == SerializationMode.PreGenOnly)
619 {
620 AssemblyName name = type.Assembly.GetName();
621 string tempAssemblyName = Compiler.GetTempAssemblyName(name, null);
623 }
625 {
626 return Array.Empty<XmlSerializer>();
627 }
628 if (type == null)
629 {
630 tempAssembly = new TempAssembly(mappings, new Type[1] { type }, null, null);
632 contract = tempAssembly.Contract;
633 for (int j = 0; j < array.Length; j++)
634 {
635 array[j] = (XmlSerializer)contract.TypedSerializers[mappings[j].Key];
636 array[j].SetTempAssembly(tempAssembly, mappings[j]);
637 }
638 return array;
639 }
641 }
643 for (int k = 0; k < array2.Length; k++)
644 {
645 array2[k] = (XmlSerializer)contract.TypedSerializers[mappings[k].Key];
646 }
647 return array2;
648 }
649
651 {
653 for (int i = 0; i < array.Length; i++)
654 {
655 array[i] = new XmlSerializer();
656 array[i]._rootType = type;
657 array[i]._mapping = mappings[i];
658 array[i]._isReflectionBasedSerializer = true;
659 }
660 return array;
661 }
662
663 [RequiresUnreferencedCode("calls GenerateSerializerToStream")]
664 [UnconditionalSuppressMessage("SingleFile", "IL3000: Avoid accessing Assembly file path when publishing as a single file", Justification = "Code is used on diagnostics so we fallback to print assembly.FullName if assembly.Location is empty")]
666 {
667 if (types == null || types.Length == 0)
668 {
669 return false;
670 }
671 if (mappings == null)
672 {
673 throw new ArgumentNullException("mappings");
674 }
675 if (stream == null)
676 {
677 throw new ArgumentNullException("stream");
678 }
680 {
682 }
683 Assembly assembly = null;
684 foreach (Type type in types)
685 {
687 {
689 }
690 if (assembly == null)
691 {
692 assembly = type.Assembly;
693 }
694 else if (type.Assembly != assembly)
695 {
696 string text = assembly.Location;
697 if (text == string.Empty)
698 {
699 text = assembly.FullName;
700 }
701 throw new ArgumentException(System.SR.Format(System.SR.XmlPregenOrphanType, type.FullName, text), "types");
702 }
703 }
705 }
706
707 [RequiresUnreferencedCode("calls Contract")]
709 {
713 {
714 if (!s_xmlSerializerTable.TryGetValue(type, out value))
715 {
718 }
719 }
720 lock (value)
721 {
723 for (int i = 0; i < mappings.Length; i++)
724 {
726 if (!value.TryGetValue(key, out array[i]))
727 {
728 dictionary.Add(key, i);
729 }
730 }
731 if (dictionary.Count > 0)
732 {
733 XmlMapping[] array2 = new XmlMapping[dictionary.Count];
734 int num = 0;
736 {
737 array2[num++] = key2.Mapping;
738 }
739 TempAssembly tempAssembly = new TempAssembly(array2, new Type[1] { type }, null, null);
742 {
743 num = dictionary[key3];
744 array[num] = (XmlSerializer)contract.TypedSerializers[key3.Mapping.Key];
745 array[num].SetTempAssembly(tempAssembly, key3.Mapping);
746 value[key3] = array[num];
747 }
748 }
749 }
750 return array;
751 }
752
753 [RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
754 public static XmlSerializer[] FromTypes(Type[]? types)
755 {
756 if (types == null)
757 {
758 return Array.Empty<XmlSerializer>();
759 }
762 for (int i = 0; i < types.Length; i++)
763 {
764 array[i] = xmlReflectionImporter.ImportTypeMapping(types[i]);
765 }
767 return FromMappings(mappings);
768 }
769
771 {
773 }
774
775 public static string GetXmlSerializerAssemblyName(Type type, string? defaultNamespace)
776 {
777 if (type == null)
778 {
779 throw new ArgumentNullException("type");
780 }
781 return Compiler.GetTempAssemblyName(type.Assembly.GetName(), defaultNamespace);
782 }
783
785 {
786 throw new NotImplementedException();
787 }
788
789 protected virtual object Deserialize(XmlSerializationReader reader)
790 {
791 throw new NotImplementedException();
792 }
793
795 {
796 throw new NotImplementedException();
797 }
798
799 protected virtual void Serialize(object? o, XmlSerializationWriter writer)
800 {
801 throw new NotImplementedException();
802 }
803
810
811 private static XmlTypeMapping GetKnownMapping(Type type, string ns)
812 {
813 if (ns != null && ns != string.Empty)
814 {
815 return null;
816 }
818 if (typeDesc == null)
819 {
820 return null;
821 }
823 elementAccessor.Name = typeDesc.DataType.Name;
825 xmlTypeMapping.SetKeyInternal(XmlMapping.GenerateKey(type, null, null));
826 return xmlTypeMapping;
827 }
828
830 {
834 {
835 case TypeCode.String:
837 return;
838 case TypeCode.Int32:
840 return;
841 case TypeCode.Boolean:
842 xmlSerializationPrimitiveWriter.Write_boolean(o);
843 return;
844 case TypeCode.Int16:
846 return;
847 case TypeCode.Int64:
849 return;
850 case TypeCode.Single:
852 return;
853 case TypeCode.Double:
855 return;
856 case TypeCode.Decimal:
857 xmlSerializationPrimitiveWriter.Write_decimal(o);
858 return;
859 case TypeCode.DateTime:
860 xmlSerializationPrimitiveWriter.Write_dateTime(o);
861 return;
862 case TypeCode.Char:
864 return;
865 case TypeCode.Byte:
866 xmlSerializationPrimitiveWriter.Write_unsignedByte(o);
867 return;
868 case TypeCode.SByte:
870 return;
871 case TypeCode.UInt16:
872 xmlSerializationPrimitiveWriter.Write_unsignedShort(o);
873 return;
874 case TypeCode.UInt32:
875 xmlSerializationPrimitiveWriter.Write_unsignedInt(o);
876 return;
877 case TypeCode.UInt64:
878 xmlSerializationPrimitiveWriter.Write_unsignedLong(o);
879 return;
880 }
882 {
884 return;
885 }
886 if (_primitiveType == typeof(byte[]))
887 {
888 xmlSerializationPrimitiveWriter.Write_base64Binary(o);
889 return;
890 }
891 if (_primitiveType == typeof(Guid))
892 {
894 return;
895 }
897 {
898 xmlSerializationPrimitiveWriter.Write_TimeSpan(o);
899 return;
900 }
902 {
903 xmlSerializationPrimitiveWriter.Write_dateTimeOffset(o);
904 return;
905 }
907 }
908
910 {
912 xmlSerializationPrimitiveReader.Init(xmlReader, events, null, null);
914 {
915 case TypeCode.String:
916 return xmlSerializationPrimitiveReader.Read_string();
917 case TypeCode.Int32:
918 return xmlSerializationPrimitiveReader.Read_int();
919 case TypeCode.Boolean:
920 return xmlSerializationPrimitiveReader.Read_boolean();
921 case TypeCode.Int16:
922 return xmlSerializationPrimitiveReader.Read_short();
923 case TypeCode.Int64:
924 return xmlSerializationPrimitiveReader.Read_long();
925 case TypeCode.Single:
926 return xmlSerializationPrimitiveReader.Read_float();
927 case TypeCode.Double:
928 return xmlSerializationPrimitiveReader.Read_double();
929 case TypeCode.Decimal:
930 return xmlSerializationPrimitiveReader.Read_decimal();
931 case TypeCode.DateTime:
932 return xmlSerializationPrimitiveReader.Read_dateTime();
933 case TypeCode.Char:
934 return xmlSerializationPrimitiveReader.Read_char();
935 case TypeCode.Byte:
936 return xmlSerializationPrimitiveReader.Read_unsignedByte();
937 case TypeCode.SByte:
938 return xmlSerializationPrimitiveReader.Read_byte();
939 case TypeCode.UInt16:
940 return xmlSerializationPrimitiveReader.Read_unsignedShort();
941 case TypeCode.UInt32:
942 return xmlSerializationPrimitiveReader.Read_unsignedInt();
943 case TypeCode.UInt64:
944 return xmlSerializationPrimitiveReader.Read_unsignedLong();
945 default:
947 {
948 return xmlSerializationPrimitiveReader.Read_QName();
949 }
950 if (_primitiveType == typeof(byte[]))
951 {
952 return xmlSerializationPrimitiveReader.Read_base64Binary();
953 }
954 if (_primitiveType == typeof(Guid))
955 {
956 return xmlSerializationPrimitiveReader.Read_guid();
957 }
959 {
960 return xmlSerializationPrimitiveReader.Read_TimeSpan();
961 }
963 {
964 return xmlSerializationPrimitiveReader.Read_dateTimeOffset();
965 }
967 }
968 }
969}
static ? Delegate Remove(Delegate? source, Delegate? value)
Definition Delegate.cs:463
static ? Delegate Combine(Delegate? a, Delegate? b)
Definition Delegate.cs:379
static CultureInfo InvariantCulture
static string FailLoadAssemblyUnderPregenMode
Definition SR.cs:2146
static string XmlUnxpectedType
Definition SR.cs:1586
static string XmlMelformMapping
Definition SR.cs:1774
static string XmlSerializeError
Definition SR.cs:1528
static string XmlPregenTypeDynamic
Definition SR.cs:2142
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlGenError
Definition SR.cs:1608
static string XmlSerializeErrorDetails
Definition SR.cs:1530
static string XmlPregenOrphanType
Definition SR.cs:2144
static string XmlInvalidEncodingNotEncoded1
Definition SR.cs:1714
Definition SR.cs:7
static TypeCode GetTypeCode(Type? type)
Definition Type.cs:919
string? FullName
Definition Type.cs:47
static string GetTempAssemblyName(AssemblyName parent, string ns)
Definition Compiler.cs:82
void InvokeWriter(XmlMapping mapping, XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id)
static Assembly LoadGeneratedAssembly(Type type, string defaultNamespace, out XmlSerializerImplementation contract)
bool CanRead(XmlMapping mapping, XmlReader xmlReader)
object InvokeReader(XmlMapping mapping, XmlReader xmlReader, XmlDeserializationEvents events, string encodingStyle)
static bool GenerateSerializerToStream(XmlMapping[] xmlMappings, Type[] types, string defaultNamespace, Assembly assembly, Hashtable assemblies, Stream stream)
static bool IsShallow(XmlMapping[] mappings)
Definition XmlMapping.cs:99
static string GenerateKey(Type type, XmlRootAttribute root, string ns)
Definition XmlMapping.cs:82
static XmlTypeMapping GetTopLevelMapping(Type type, string defaultNamespace)
override bool Equals([NotNullWhen(true)] object obj)
static XmlSerializer[] GetReflectionBasedSerializers(XmlMapping[] mappings, Type type)
void SerializeUsingReflection(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces, string encodingStyle, string id)
void SerializePrimitive(XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces)
void Serialize(TextWriter textWriter, object? o, XmlSerializerNamespaces? namespaces)
static volatile XmlSerializerNamespaces s_defaultNamespaces
static string GetXmlSerializerAssemblyName(Type type, string? defaultNamespace)
void Serialize(XmlWriter xmlWriter, object? o, XmlSerializerNamespaces? namespaces)
UnreferencedObjectEventHandler UnreferencedObject
static XmlSerializer[] GetSerializersFromCache(XmlMapping[] mappings, Type type)
static XmlSerializerNamespaces DefaultNamespaces
static readonly Dictionary< Type, Dictionary< XmlSerializerMappingKey, XmlSerializer > > s_xmlSerializerTable
static XmlTypeMapping GetKnownMapping(Type type, string ns)
virtual bool CanDeserialize(XmlReader xmlReader)
XmlSerializer(Type type, Type[]? extraTypes)
virtual object Deserialize(XmlSerializationReader reader)
object DeserializePrimitive(XmlReader xmlReader, XmlDeserializationEvents events)
object? Deserialize(TextReader textReader)
void Serialize(XmlWriter xmlWriter, object? o)
XmlSerializer(Type type, XmlRootAttribute? root)
void Serialize(TextWriter textWriter, object? o)
virtual XmlSerializationWriter CreateWriter()
static bool ShouldUseReflectionBasedSerialization(XmlMapping mapping)
static bool GenerateSerializer(Type[] types, XmlMapping[] mappings, Stream stream)
static TempAssembly GenerateTempAssembly(XmlMapping xmlMapping, Type type, string defaultNamespace)
object? Deserialize(XmlReader xmlReader)
virtual void Serialize(object? o, XmlSerializationWriter writer)
XmlSerializer(XmlTypeMapping xmlTypeMapping)
void SetTempAssembly(TempAssembly tempAssembly, XmlMapping mapping)
static readonly TempAssemblyCache s_cache
object? Deserialize(XmlReader xmlReader, string? encodingStyle)
XmlAttributeEventHandler UnknownAttribute
static XmlSerializer[] FromMappings(XmlMapping[]? mappings, Type? type)
XmlSerializer(Type type, string? defaultNamespace)
static XmlSerializer[] FromTypes(Type[]? types)
XmlSerializer(Type type, XmlAttributeOverrides? overrides, Type[]? extraTypes, XmlRootAttribute? root, string? defaultNamespace)
void Serialize(XmlWriter xmlWriter, object? o, XmlSerializerNamespaces? namespaces, string? encodingStyle, string? id)
static XmlSerializer[] FromMappings(XmlMapping[]? mappings)
static TempAssembly GenerateTempAssembly(XmlMapping xmlMapping, Type type, string defaultNamespace, string location)
object? Deserialize(XmlReader xmlReader, XmlDeserializationEvents events)
void Serialize(XmlWriter xmlWriter, object? o, XmlSerializerNamespaces? namespaces, string? encodingStyle)
void Serialize(Stream stream, object? o)
object DeserializeUsingReflection(XmlReader xmlReader, string encodingStyle, XmlDeserializationEvents events)
static TempAssembly GenerateTempAssembly(XmlMapping xmlMapping)
XmlSerializer(Type type, XmlAttributeOverrides? overrides)
XmlTypeMapping GenerateXmlTypeMapping(Type type, XmlAttributeOverrides overrides, Type[] extraTypes, XmlRootAttribute root, string defaultNamespace)
void Serialize(Stream stream, object? o, XmlSerializerNamespaces? namespaces)
virtual XmlSerializationReader CreateReader()
object? Deserialize(XmlReader xmlReader, string? encodingStyle, XmlDeserializationEvents events)
XmlSerializer(Type type, XmlAttributeOverrides? overrides, Type[]? extraTypes, XmlRootAttribute? root, string? defaultNamespace, string? location)
static string GetXmlSerializerAssemblyName(Type type)
static XmlReader Create(string inputUri)
static XmlWriter Create(string outputFileName)
Definition XmlWriter.cs:468
delegate void XmlElementEventHandler(object? sender, XmlElementEventArgs e)
delegate void UnreferencedObjectEventHandler(object? sender, UnreferencedObjectEventArgs e)
delegate void XmlNodeEventHandler(object? sender, XmlNodeEventArgs e)
delegate void XmlAttributeEventHandler(object? sender, XmlAttributeEventArgs e)
TypeCode
Definition TypeCode.cs:4