private void ReadObject(BinaryElement element, BinaryReader reader, out long objectId, out object value, out SerializationInfo info) { switch (element) { case BinaryElement.RefTypeObject: this.ReadRefTypeObjectInstance(reader, out objectId, out value, out info); return; case BinaryElement.UntypedRuntimeObject: this.ReadObjectInstance(reader, true, false, out objectId, out value, out info); return; case BinaryElement.UntypedExternalObject: this.ReadObjectInstance(reader, false, false, out objectId, out value, out info); return; case BinaryElement.RuntimeObject: this.ReadObjectInstance(reader, true, true, out objectId, out value, out info); return; case BinaryElement.ExternalObject: this.ReadObjectInstance(reader, false, true, out objectId, out value, out info); return; case BinaryElement.String: info = null; this.ReadStringIntance(reader, out objectId, out value); return; case BinaryElement.GenericArray: info = null; this.ReadGenericArray(reader, out objectId, out value); return; case BinaryElement.BoxedPrimitiveTypeValue: value = this.ReadBoxedPrimitiveTypeValue(reader); objectId = 0L; info = null; return; case BinaryElement.NullValue: value = null; objectId = 0L; info = null; return; case BinaryElement.Assembly: this.ReadAssembly(reader); this.ReadObject((BinaryElement)reader.ReadByte(), reader, out objectId, out value, out info); return; case BinaryElement.ArrayFiller8b: value = new ObjectReader.ArrayNullFiller((int)reader.ReadByte()); objectId = 0L; info = null; return; case BinaryElement.ArrayFiller32b: value = new ObjectReader.ArrayNullFiller(reader.ReadInt32()); objectId = 0L; info = null; return; case BinaryElement.ArrayOfPrimitiveType: this.ReadArrayOfPrimitiveType(reader, out objectId, out value); info = null; return; case BinaryElement.ArrayOfObject: this.ReadArrayOfObject(reader, out objectId, out value); info = null; return; case BinaryElement.ArrayOfString: this.ReadArrayOfString(reader, out objectId, out value); info = null; return; } throw new SerializationException("Unexpected binary element: " + (int)element); }