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

ReadObjectString() private method

private ReadObjectString ( BinaryHeaderEnum binaryHeaderEnum ) : void
binaryHeaderEnum BinaryHeaderEnum
return void
		private void ReadObjectString(BinaryHeaderEnum binaryHeaderEnum)
		{
			SerTrace.Log( this, "ReadObjectString");

			if (objectString == null)
				objectString = new BinaryObjectString();

			if (binaryHeaderEnum == BinaryHeaderEnum.ObjectString)
			{
				objectString.Read(this);
				objectString.Dump();
			}
			else
			{
				if (crossAppDomainString == null)
					crossAppDomainString = new BinaryCrossAppDomainString();
				crossAppDomainString.Read(this);
				crossAppDomainString.Dump();
				objectString.value = objectReader.CrossAppDomainArray(crossAppDomainString.value) as String;
				if (objectString.value == null)
					throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_CrossAppDomainError"),"String", crossAppDomainString.value));

				objectString.objectId = crossAppDomainString.objectId;
			}

			prs.Init();
			prs.PRparseTypeEnum = InternalParseTypeE.Object;
			prs.PRobjectId = objectReader.GetId(objectString.objectId);

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

			prs.PRobjectTypeEnum = InternalObjectTypeE.Object;

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

			prs.PRvalue = objectString.value;
			prs.PRkeyDt = "System.String";
			prs.PRdtType = Converter.typeofString;
			prs.PRdtTypeCode = InternalPrimitiveTypeE.Invalid;
			prs.PRvarValue = objectString.value; //Need to set it because ObjectReader is picking up value from variant, not pr.PRvalue

			if (objectOp == null)
			{
				// Top level String
				SerTrace.Log( this, "ReadObjectString, Non-Nested");            
				prs.PRparseTypeEnum = InternalParseTypeE.Object;
				prs.PRname = "System.String";
			}
			else
			{
				// Nested in an Object

				SerTrace.Log( this, "ReadObjectString, Nested");
				prs.PRparseTypeEnum = InternalParseTypeE.Member;
				prs.PRmemberValueEnum = InternalMemberValueE.InlineValue;

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

			}

			objectReader.Parse(prs);
		}