System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren C# (CSharp) Метод

StartChildren() приватный Метод

private StartChildren ( ) : void
Результат void
        internal void StartChildren()
        {
#if _DEBUG
            InternalST.Soap( this,SerTraceString("StartChildren Begin ", (ParseRecord)stack.Peek(), null, currentState, headerState));
#endif
            ParseRecord pr = null;

            switch (currentState)
            {
                case InternalParseStateE.Object:
                    InternalST.Soap( this,"StartChildren Object");
                    pr = (ParseRecord)stack.Peek();
                    ParseRecord objectPr = (ParseRecord)stack.PeekPeek();
                    ProcessAttributes(pr, objectPr);
                    if (pr.PRarrayTypeEnum != InternalArrayTypeE.Base64)
                    {
                        if (!((pr.PRparseTypeEnum == InternalParseTypeE.Envelope) || (pr.PRparseTypeEnum == InternalParseTypeE.Body)))
                        {
                            currentState = InternalParseStateE.Member;

                        }

                        switch (headerState)
                        {
                            case HeaderStateEnum.None:
                            case HeaderStateEnum.TopLevelObject:
                                InternalST.Soap( this,"ObjectReader.Parse 8");
                                InternalST.Soap( this,"SoapParser.StartChildren TopFound "+isTopFound+" objectPr.parseTypeEnum "+(objectPr == null?"null":((Enum)objectPr.PRparseTypeEnum).ToString()));
                                if (!isTopFound && (objectPr != null ) && (objectPr.PRparseTypeEnum == InternalParseTypeE.Body))
                                {
                                    pr.PRobjectPositionEnum = InternalObjectPositionE.Top;
                                    isTopFound = true;
                                    InternalST.Soap( this,"SoapParser.StartChildren change position to top");
                                }
                                objectReader.Parse(pr);
                                pr.PRisParsed = true;                               
                                break;
                            case HeaderStateEnum.HeaderRecord:
                            case HeaderStateEnum.NestedObject:
                            case HeaderStateEnum.FirstHeaderRecord:
                                ProcessHeader(pr);                              
                                break;                          
                        }
                    }
                    break;

                case InternalParseStateE.Member:
                    InternalST.Soap( this,"StartChildren Member");                  
                    pr = (ParseRecord)stack.Peek();             
                    currentState = InternalParseStateE.MemberChild;
                    break;

                case InternalParseStateE.MemberChild:
                default:
                    MarshalError("StartChildren", (ParseRecord)stack.Peek(), null, currentState);
                    break;
            }

#if _DEBUG
            InternalST.Soap( this, "StartChildren 10");     
            InternalST.Soap( this,SerTraceString("StartChildren End ", (ParseRecord)stack.Peek(), null, currentState, headerState));
#endif
        }