private void ReadMemberPrimitiveTyped() { SerTrace.Log(this, "ReadObjectPrimitive"); if (memberPrimitiveTyped == null) { memberPrimitiveTyped = new MemberPrimitiveTyped(); } memberPrimitiveTyped.Read(this); memberPrimitiveTyped.Dump(); prs.PRobjectTypeEnum = InternalObjectTypeE.Object; //Get rid of ObjectProgress objectOp = (ObjectProgress)stack.Peek(); prs.Init(); prs.PRvarValue = memberPrimitiveTyped.value; prs.PRkeyDt = Converter.ToComType(memberPrimitiveTyped.primitiveTypeEnum); prs.PRdtType = Converter.ToType(memberPrimitiveTyped.primitiveTypeEnum); prs.PRdtTypeCode = memberPrimitiveTyped.primitiveTypeEnum; if (objectOp == null) { // Top level boxed primitive SerTrace.Log(this, "ReadObjectPrimitive, Non-Nested"); prs.PRparseTypeEnum = InternalParseTypeE.Object; prs.PRname = "System.Variant"; } else { // Nested in an Object SerTrace.Log(this, "ReadObjectPrimitive, 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(Environment.GetResourceString("Serialization_ObjectTypeEnum"), ((Enum)objectOp.objectTypeEnum).ToString())); } } objectReader.Parse(prs); }
internal void WriteMember(NameInfo memberNameInfo, NameInfo typeNameInfo, Object value) { #if _DEBUG SerTrace.Log("BinaryWriter", "Write Member memberName ", memberNameInfo.NIname, ", value ", value); memberNameInfo.Dump("WriteMember memberNameInfo"); typeNameInfo.Dump("WriteMember typeNameInfo"); #endif InternalWriteItemNull(); InternalPrimitiveTypeE typeInformation = typeNameInfo.NIprimitiveTypeEnum; // Writes Members with primitive values if (memberNameInfo.NItransmitTypeOnMember) { if (memberPrimitiveTyped == null) { memberPrimitiveTyped = new MemberPrimitiveTyped(); } memberPrimitiveTyped.Set((InternalPrimitiveTypeE)typeInformation, value); if (memberNameInfo.NIisArrayItem) { BCLDebug.Trace("BINARY", "-----item-----"); } else { BCLDebug.Trace("BINARY", "-----", memberNameInfo.NIname, "-----"); } memberPrimitiveTyped.Dump(); memberPrimitiveTyped.Write(this); } else { if (memberPrimitiveUnTyped == null) { memberPrimitiveUnTyped = new MemberPrimitiveUnTyped(); } memberPrimitiveUnTyped.Set(typeInformation, value); if (memberNameInfo.NIisArrayItem) { BCLDebug.Trace("BINARY", "-----item-----"); } else { BCLDebug.Trace("BINARY", "-----", memberNameInfo.NIname, "-----"); } memberPrimitiveUnTyped.Dump(); memberPrimitiveUnTyped.Write(this); } }