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

◆ WriteMemberElementsIf()

void System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberElementsIf ( Member[] expectedMembers,
Member anyElementMember,
UnknownNodeAction elementElseAction,
Fixup fixup = null,
CheckTypeSource checkTypeSource = null )
inlineprivate

Definition at line 693 of file ReflectionXmlSerializationReader.cs.

694 {
695 bool flag = checkTypeSource != null;
697 ElementAccessor elementAccessor = null;
698 Member member = null;
699 bool flag3 = false;
700 int elementIndex = -1;
701 foreach (Member member2 in expectedMembers)
702 {
703 if (member2.Mapping.Xmlns != null || member2.Mapping.Ignore || (flag2 && (member2.Mapping.IsText || member2.Mapping.IsAttribute)))
704 {
705 continue;
706 }
707 for (int j = 0; j < member2.Mapping.Elements.Length; j++)
708 {
709 ElementAccessor elementAccessor2 = member2.Mapping.Elements[j];
710 string text = ((elementAccessor2.Form == XmlSchemaForm.Qualified) ? elementAccessor2.Namespace : string.Empty);
711 if (flag)
712 {
713 Type type;
714 if (elementAccessor2.Mapping is NullableMapping nullableMapping)
715 {
716 TypeDesc typeDesc = nullableMapping.BaseMapping.TypeDesc;
717 type = typeDesc.Type;
718 }
719 else
720 {
721 type = elementAccessor2.Mapping.TypeDesc.Type;
722 }
723 if (type.IsAssignableFrom(checkTypeSource.Type))
724 {
725 flag3 = true;
726 }
727 }
728 else if (elementAccessor2.Name == base.Reader.LocalName && text == base.Reader.NamespaceURI)
729 {
730 flag3 = true;
731 }
732 if (flag3)
733 {
735 member = member2;
736 elementIndex = j;
737 break;
738 }
739 }
740 if (flag3)
741 {
742 break;
743 }
744 }
745 if (flag3)
746 {
747 if (flag)
748 {
749 member.Source(checkTypeSource.RefObject);
750 if (member.FixupIndex >= 0)
751 {
752 fixup.Ids[member.FixupIndex] = checkTypeSource.Id;
753 }
754 }
755 else
756 {
757 string defaultNamespace = ((elementAccessor.Form == XmlSchemaForm.Qualified) ? elementAccessor.Namespace : string.Empty);
758 bool flag4 = member.Mapping.TypeDesc.IsArrayLike && !member.Mapping.TypeDesc.IsArray;
759 WriteElement(elementAccessor, member.Mapping.CheckSpecified == SpecifiedAccessor.ReadWrite, flag4 && member.Mapping.TypeDesc.IsNullable, member.Mapping.ReadOnly, defaultNamespace, member.FixupIndex, elementIndex, fixup, member);
760 }
761 }
762 else if (anyElementMember != null && anyElementMember.Mapping != null)
763 {
764 MemberMapping mapping = anyElementMember.Mapping;
765 member = anyElementMember;
766 ElementAccessor[] elements = mapping.Elements;
767 foreach (ElementAccessor elementAccessor3 in elements)
768 {
769 if (elementAccessor3.Any && elementAccessor3.Name.Length == 0)
770 {
772 WriteElement(elementAccessor3, mapping.CheckSpecified == SpecifiedAccessor.ReadWrite, checkForNull: false, readOnly: false, defaultNamespace2, -1, -1, fixup, member);
773 break;
774 }
775 }
776 }
777 else
778 {
779 member = null;
781 }
782 }
object WriteElement(ElementAccessor element, bool checkSpecified, bool checkForNull, bool readOnly, string defaultNamespace, int fixupIndex=-1, int elementIndex=-1, Fixup fixup=null, Member member=null)

References System.Xml.Dictionary, System.elementIndex, System.Xml.Serialization.ReflectionXmlSerializationReader.IsSequence(), System.Xml.Serialization.ReflectionXmlSerializationReader.ProcessUnknownNode(), System.text, System.type, and System.Xml.Serialization.ReflectionXmlSerializationReader.WriteElement().

Referenced by System.Xml.Serialization.ReflectionXmlSerializationReader.GenerateEncodedMembersElement(), and System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberElements().