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

ReadObjectWithMap() private method

private ReadObjectWithMap ( BinaryObjectWithMap record ) : void
record BinaryObjectWithMap
return void
		private void ReadObjectWithMap(BinaryObjectWithMap record)
		{
			BinaryAssemblyInfo assemblyInfo = null;
			ObjectProgress op = GetOp();
			ParseRecord pr = op.pr;
			stack.Push(op);


			if (record.binaryHeaderEnum == BinaryHeaderEnum.ObjectWithMapAssemId)
			{
				if (record.assemId < 1)
					throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Assembly"),record.name));

				assemblyInfo = ((BinaryAssemblyInfo)AssemIdToAssemblyTable[record.assemId]);

				if (assemblyInfo == null)
					throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Assembly"),record.assemId+" "+record.name));
				SerTrace.Log( this, "ReadObjectWithMap  lookup assemIdToAssembly assemId ",record.assemId," assembly ",assemblyInfo.assemblyString);                
			}
			else if (record.binaryHeaderEnum == BinaryHeaderEnum.ObjectWithMap)
			{

				assemblyInfo = SystemAssemblyInfo; //Urt assembly
			}

			Type objectType = objectReader.GetType(assemblyInfo, record.name);

			ObjectMap objectMap = ObjectMap.Create(record.name, objectType, record.memberNames, objectReader, record.objectId, assemblyInfo);
			ObjectMapIdTable[record.objectId] = objectMap;

			op.objectTypeEnum = InternalObjectTypeE.Object;     
			op.binaryTypeEnumA = objectMap.binaryTypeEnumA;
			op.typeInformationA = objectMap.typeInformationA;       
			op.memberLength = op.binaryTypeEnumA.Length;
			op.memberNames = objectMap.memberNames;
			op.memberTypes = objectMap.memberTypes;

			ObjectProgress objectOp = (ObjectProgress)stack.PeekPeek();

			if ((objectOp == null) || (objectOp.isInitial))
			{
				// Non-Nested Object
				op.name = record.name;
				pr.PRparseTypeEnum = InternalParseTypeE.Object;
				op.memberValueEnum = InternalMemberValueE.Empty;                                    

			}
			else
			{
				// Nested Object
				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.Field;                  
					break;
				default:
					throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_ObjectTypeEnum"),((Enum)objectOp.objectTypeEnum).ToString()));                      
				}

			}
			pr.PRobjectTypeEnum = InternalObjectTypeE.Object;
			pr.PRobjectId = objectReader.GetId((long)record.objectId);
			pr.PRobjectInfo = objectMap.CreateObjectInfo(ref pr.PRsi, ref pr.PRmemberData);

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

			pr.PRkeyDt = record.name;
			pr.PRdtType = objectMap.objectType;
			pr.PRdtTypeCode = InternalPrimitiveTypeE.Invalid;
			objectReader.Parse(pr);
		}

Same methods

__BinaryParser::ReadObjectWithMap ( BinaryHeaderEnum binaryHeaderEnum ) : void