System.Runtime.Serialization.Formatters.Soap.ParseRecord.Copy C# (CSharp) Method

Copy() private method

private Copy ( ) : ParseRecord
return ParseRecord
		internal ParseRecord Copy()
		{

			ParseRecord newPr = new ParseRecord();
			// Enums
			newPr.PRparseTypeEnum = PRparseTypeEnum;
			newPr.PRobjectTypeEnum = PRobjectTypeEnum;
			newPr.PRarrayTypeEnum = PRarrayTypeEnum;
			newPr.PRmemberTypeEnum = PRmemberTypeEnum;
			newPr.PRmemberValueEnum = PRmemberValueEnum;
			newPr.PRobjectPositionEnum = PRobjectPositionEnum;

			// Object
			newPr.PRname = PRname;
			newPr.PRisParsed = PRisParsed;			
            newPr.PRisProcessAttributes = PRisProcessAttributes;
			newPr.PRnameXmlKey = PRnameXmlKey;
			newPr.PRxmlNameSpace = PRxmlNameSpace;			

			// Value
			newPr.PRvalue = PRvalue;


			// dt attribute
			newPr.PRkeyDt = PRkeyDt;
			newPr.PRdtType = PRdtType;
            newPr.PRassemblyName = PRassemblyName;
			newPr.PRdtTypeCode = PRdtTypeCode;
			newPr.PRisEnum = PRisEnum;			

			// Object ID
			newPr.PRobjectId = PRobjectId;

			// Reference ID
			newPr.PRidRef = PRidRef;

			// Array

			// Array Element Type
			newPr.PRarrayElementTypeString = PRarrayElementTypeString;
			newPr.PRarrayElementType = PRarrayElementType;
			newPr.PRisArrayVariant = PRisArrayVariant;
			newPr.PRarrayElementTypeCode = PRarrayElementTypeCode;


			// Array Primitive Element type
			newPr.PRprimitiveArrayTypeString = PRprimitiveArrayTypeString;

			// Parsed array information
			newPr.PRrank = PRrank;
			newPr.PRlengthA = PRlengthA;
			newPr.PRpositionA = PRpositionA;
			newPr.PRlowerBoundA = PRlowerBoundA;
			newPr.PRupperBoundA = PRupperBoundA;		

			// Array map for placing array elements in array
			newPr.PRindexMap = PRindexMap;
			newPr.PRmemberIndex = PRmemberIndex;
			newPr.PRlinearlength = PRlinearlength;
			newPr.PRrectangularMap = PRrectangularMap;
			newPr.PRisLowerBound = PRisLowerBound;

			// SerializedStreamHeader information
			newPr.PRtopId = PRtopId;
			newPr.PRheaderId = PRheaderId;
			newPr.PRisHeaderRoot = PRisHeaderRoot;
			newPr.PRisAttributesProcessed = PRisAttributesProcessed;

			// Parsed HeaderMember Information
			newPr.PRisMustUnderstand = PRisMustUnderstand;

			// Parse State
			newPr.PRparseStateEnum = PRparseStateEnum;
			newPr.PRisWaitingForNestedObject = PRisWaitingForNestedObject;


			// ValueType Fixup needed
			newPr.PRisValueTypeFixup = PRisValueTypeFixup;

			newPr.PRnewObj = PRnewObj;
			newPr.PRobjectA = PRobjectA;
			newPr.PRprimitiveArray = PRprimitiveArray;
			newPr.PRobjectInfo = PRobjectInfo;
			newPr.PRisRegistered = PRisRegistered;
			newPr.PRisXmlAttribute = PRisXmlAttribute;

			return newPr;
		}		

Usage Example

 private void ParseMember(ParseRecord pr)
 {
     ParseRecord parentPr = (ParseRecord) this.stack.Peek();
     if (parentPr != null)
     {
         string pRname = parentPr.PRname;
     }
     if ((parentPr.PRdtType == Converter.typeofSoapFault) && (pr.PRname.ToLower(CultureInfo.InvariantCulture) == "faultstring"))
     {
         this.faultString = pr.PRvalue;
     }
     if ((parentPr.PRobjectPositionEnum == InternalObjectPositionE.Top) && !this.isTopObjectResolved)
     {
         if (pr.PRdtType == Converter.typeofString)
         {
             this.ParseString(pr, parentPr);
         }
         this.topStack.Push(pr.Copy());
     }
     else
     {
         switch (pr.PRmemberTypeEnum)
         {
             case InternalMemberTypeE.Item:
                 this.ParseArrayMember(pr);
                 return;
         }
         if (parentPr.PRobjectInfo != null)
         {
             parentPr.PRobjectInfo.AddMemberSeen();
         }
         bool flag = ((this.IsFakeTopObject && (parentPr.PRobjectPositionEnum == InternalObjectPositionE.Top)) && (parentPr.PRobjectInfo != null)) && (parentPr.PRdtType != Converter.typeofSoapFault);
         if ((pr.PRdtType == null) && parentPr.PRobjectInfo.isTyped)
         {
             if (flag)
             {
                 pr.PRdtType = parentPr.PRobjectInfo.GetType(this.paramPosition++);
             }
             else
             {
                 pr.PRdtType = parentPr.PRobjectInfo.GetType(pr.PRname);
             }
             if (pr.PRdtType == null)
             {
                 throw new SerializationException(string.Format(CultureInfo.CurrentCulture, SoapUtil.GetResourceString("Serialization_TypeResolved"), new object[] { parentPr.PRnewObj + " " + pr.PRname }));
             }
             pr.PRdtTypeCode = Converter.ToCode(pr.PRdtType);
         }
         else if (flag)
         {
             this.paramPosition++;
         }
         if (pr.PRmemberValueEnum == InternalMemberValueE.Null)
         {
             parentPr.PRobjectInfo.AddValue(pr.PRname, null);
         }
         else if (pr.PRmemberValueEnum == InternalMemberValueE.Nested)
         {
             this.ParseObject(pr);
             this.stack.Push(pr);
             if ((pr.PRobjectInfo != null) && pr.PRobjectInfo.objectType.IsValueType)
             {
                 if (this.IsFakeTopObject)
                 {
                     parentPr.PRobjectInfo.AddParamName(pr.PRname);
                 }
                 pr.PRisValueTypeFixup = true;
                 this.valueFixupStack.Push(new ValueFixup(parentPr.PRnewObj, pr.PRname, parentPr.PRobjectInfo));
             }
             else
             {
                 parentPr.PRobjectInfo.AddValue(pr.PRname, pr.PRnewObj);
             }
         }
         else if (pr.PRmemberValueEnum == InternalMemberValueE.Reference)
         {
             object obj2 = this.m_objectManager.GetObject(pr.PRidRef);
             if (obj2 == null)
             {
                 parentPr.PRobjectInfo.AddValue(pr.PRname, null);
                 parentPr.PRobjectInfo.RecordFixup(parentPr.PRobjectId, pr.PRname, pr.PRidRef);
             }
             else
             {
                 parentPr.PRobjectInfo.AddValue(pr.PRname, obj2);
             }
         }
         else if (pr.PRmemberValueEnum == InternalMemberValueE.InlineValue)
         {
             if (pr.PRdtType == Converter.typeofString)
             {
                 this.ParseString(pr, parentPr);
                 parentPr.PRobjectInfo.AddValue(pr.PRname, pr.PRvalue);
             }
             else if (pr.PRdtTypeCode != InternalPrimitiveTypeE.Invalid)
             {
                 object pRvarValue = null;
                 if (pr.PRvarValue != null)
                 {
                     pRvarValue = pr.PRvarValue;
                 }
                 else
                 {
                     pRvarValue = Converter.FromString(pr.PRvalue, pr.PRdtTypeCode);
                 }
                 if ((pr.PRdtTypeCode == InternalPrimitiveTypeE.QName) && (pRvarValue != null))
                 {
                     SoapQName name = (SoapQName) pRvarValue;
                     if (name.Key != null)
                     {
                         if (name.Key.Length == 0)
                         {
                             name.Namespace = (string) this.soapHandler.keyToNamespaceTable["xmlns"];
                         }
                         else
                         {
                             name.Namespace = (string) this.soapHandler.keyToNamespaceTable["xmlns:" + name.Key];
                         }
                     }
                 }
                 parentPr.PRobjectInfo.AddValue(pr.PRname, pRvarValue);
             }
             else if (pr.PRarrayTypeEnum == InternalArrayTypeE.Base64)
             {
                 parentPr.PRobjectInfo.AddValue(pr.PRname, Convert.FromBase64String(this.FilterBin64(pr.PRvalue)));
             }
             else if ((pr.PRdtType != Converter.typeofObject) || (pr.PRvalue == null))
             {
                 if ((pr.PRdtType != null) && pr.PRdtType.IsEnum)
                 {
                     object obj3 = Enum.Parse(pr.PRdtType, pr.PRvalue);
                     parentPr.PRobjectInfo.AddValue(pr.PRname, obj3);
                 }
                 else if ((pr.PRdtType != null) && (pr.PRdtType == Converter.typeofTypeArray))
                 {
                     parentPr.PRobjectInfo.AddValue(pr.PRname, pr.PRvarValue);
                 }
                 else
                 {
                     if (!pr.PRisRegistered && (pr.PRobjectId > 0L))
                     {
                         if (pr.PRvalue == null)
                         {
                             pr.PRvalue = "";
                         }
                         this.RegisterObject(pr.PRvalue, pr, parentPr);
                     }
                     if (pr.PRdtType == Converter.typeofSystemVoid)
                     {
                         parentPr.PRobjectInfo.AddValue(pr.PRname, pr.PRdtType);
                     }
                     else if (parentPr.PRobjectInfo.isSi)
                     {
                         parentPr.PRobjectInfo.AddValue(pr.PRname, pr.PRvalue);
                     }
                 }
             }
             else if ((parentPr != null) && (parentPr.PRdtType == Converter.typeofHeader))
             {
                 pr.PRdtType = Converter.typeofString;
                 this.ParseString(pr, parentPr);
                 parentPr.PRobjectInfo.AddValue(pr.PRname, pr.PRvalue);
             }
         }
         else
         {
             this.ParseError(pr, parentPr);
         }
     }
 }
All Usage Examples Of System.Runtime.Serialization.Formatters.Soap.ParseRecord::Copy