System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObject C# (CSharp) Method

ReadObject() private method

private ReadObject ( ) : void
return void
		private void ReadObject()
		{
			SerTrace.Log( this, "ReadObject");

			if (binaryObject == null)
				binaryObject = new BinaryObject();
			binaryObject.Read(this);
			binaryObject.Dump();

			ObjectMap objectMap = (ObjectMap)ObjectMapIdTable[binaryObject.mapId];
			if (objectMap == null)
				throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Map"),binaryObject.mapId));

			ObjectProgress op = GetOp();
			ParseRecord pr = op.pr;
			stack.Push(op);

			op.objectTypeEnum = InternalObjectTypeE.Object;
			op.binaryTypeEnumA = objectMap.binaryTypeEnumA;
			op.memberNames = objectMap.memberNames;
			op.memberTypes = objectMap.memberTypes;
			op.typeInformationA = objectMap.typeInformationA;
			op.memberLength = op.binaryTypeEnumA.Length;
			ObjectProgress objectOp = (ObjectProgress)stack.PeekPeek();
			if ((objectOp == null) || (objectOp.isInitial))
			{
				// Non-Nested Object
				SerTrace.Log( this, "ReadObject non-nested ");              
				op.name = objectMap.objectName;
				pr.PRparseTypeEnum = InternalParseTypeE.Object;
				op.memberValueEnum = InternalMemberValueE.Empty;            
			}
			else
			{
				// Nested Object
				SerTrace.Log( this, "ReadObject nested ");                              
				pr.PRparseTypeEnum = InternalParseTypeE.Member;
				pr.PRmemberValueEnum = InternalMemberValueE.Nested;
				op.memberValueEnum = InternalMemberValueE.Nested;

				switch (objectOp.objectTypeEnum)
				{
				case InternalObjectTypeE.Object:
					pr.PRname = objectOp.name;                      
					pr.PRmemberTypeEnum = InternalMemberTypeE.Field;
					op.memberTypeEnum = InternalMemberTypeE.Field;
					break;
				case InternalObjectTypeE.Array:
					pr.PRmemberTypeEnum = InternalMemberTypeE.Item;
					op.memberTypeEnum = InternalMemberTypeE.Item;                   
					break;
				default:
					throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Map"),((Enum)objectOp.objectTypeEnum).ToString()));                                     
				}
			}


			pr.PRobjectId = objectReader.GetId((long)binaryObject.objectId);
			SerTrace.Log( this, "ReadObject binaryObject.objectId ",pr.PRobjectId);                         
			pr.PRobjectInfo = objectMap.CreateObjectInfo(ref pr.PRsi, ref pr.PRmemberData);

			if (pr.PRobjectId == topId)
				pr.PRobjectPositionEnum = InternalObjectPositionE.Top;

			pr.PRobjectTypeEnum = InternalObjectTypeE.Object;       
			pr.PRkeyDt = objectMap.objectName;
			pr.PRdtType = objectMap.objectType;
			pr.PRdtTypeCode = InternalPrimitiveTypeE.Invalid;
			objectReader.Parse(pr);
		}