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

◆ ImportSpecialMapping()

SpecialMapping System.Xml.Serialization.XmlReflectionImporter.ImportSpecialMapping ( Type type,
TypeDesc typeDesc,
string ns,
ImportContext context,
RecursionLimiter limiter )
inlineprivate

Definition at line 505 of file XmlReflectionImporter.cs.

506 {
507 if (_specials == null)
508 {
509 _specials = new Hashtable();
510 }
511 SpecialMapping specialMapping = (SpecialMapping)_specials[type];
512 if (specialMapping != null)
513 {
514 CheckContext(specialMapping.TypeDesc, context);
515 return specialMapping;
516 }
517 if (typeDesc.Kind == TypeKind.Serializable)
518 {
519 SerializableMapping serializableMapping = null;
520 object[] customAttributes = type.GetCustomAttributes(typeof(XmlSchemaProviderAttribute), inherit: false);
521 if (customAttributes.Length != 0)
522 {
523 XmlSchemaProviderAttribute xmlSchemaProviderAttribute = (XmlSchemaProviderAttribute)customAttributes[0];
525 serializableMapping = new SerializableMapping(methodFromSchemaProvider, xmlSchemaProviderAttribute.IsAny, ns);
526 XmlQualifiedName xsiType = serializableMapping.XsiType;
527 if (xsiType != null && !xsiType.IsEmpty)
528 {
529 if (_serializables == null)
530 {
531 _serializables = new NameTable();
532 }
533 SerializableMapping serializableMapping2 = (SerializableMapping)_serializables[xsiType];
534 if (serializableMapping2 != null)
535 {
536 if (serializableMapping2.Type == null)
537 {
539 }
540 else if (serializableMapping2.Type != type)
541 {
542 SerializableMapping next = serializableMapping2.Next;
545 }
546 }
547 else
548 {
550 if (xsdType != null)
551 {
552 SetBase(serializableMapping, xsdType.DerivedFrom);
553 }
555 }
558 }
562 }
563 else
564 {
565 serializableMapping = new SerializableMapping();
568 }
570 }
571 else
572 {
573 specialMapping = new SpecialMapping();
575 }
576 CheckContext(typeDesc, context);
579 return specialMapping;
580 }
virtual void Add(object key, object? value)
Definition Hashtable.cs:676
void AddTypeMapping(TypeMapping typeMapping)
Definition TypeScope.cs:930
void CheckContext(TypeDesc typeDesc, ImportContext context)
static MethodInfo GetMethodFromSchemaProvider(XmlSchemaProviderAttribute provider, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] Type type)
void SetBase(SerializableMapping mapping, XmlQualifiedName baseQname)
void IncludeTypes(ICustomAttributeProvider provider)

References System.Xml.Serialization.XmlReflectionImporter._serializables, System.Xml.Serialization.XmlReflectionImporter._specials, System.Xml.Serialization.XmlReflectionImporter._typeScope, System.Collections.Hashtable.Add(), System.Xml.Serialization.TypeScope.AddTypeMapping(), System.Xml.Serialization.XmlReflectionImporter.CheckContext(), System.Xml.Dictionary, System.Xml.Serialization.XmlReflectionImporter.GetMethodFromSchemaProvider(), System.Xml.Serialization.XmlReflectionImporter.IncludeTypes(), System.Xml.Serialization.XmlReflectionImporter.SetBase(), and System.type.

Referenced by System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping().