public object Deserialize( StreamReader streamReader, SerializationContext serializationContext, PropertyMetaData propertyMetaData = null) { object obj = null; long streamReaderPosition = streamReader.Position; try { obj = this.DeserializerLambda(streamReader, serializationContext); } catch (Exception e) { Probe pb = serializationContext.BeginProbe(); try { streamReader.Position = streamReaderPosition; obj = this.DeserializerLambda(streamReader, serializationContext); } catch (Exception) { } serializationContext.EndProbe(pb); throw new Exception("TypeSerializer failed (" + this.Type.ToString() + ")." + Environment.NewLine + e.Message + string.Join(Environment.NewLine, pb.DiagnosticInfo) + Environment.NewLine, e); } return(obj); }
private void EndProbeSerialize( StreamWriter streamWriter, SerializationContext serializationContext, object value, PropertyMetaData propertyMetaData, Probe probe) { probe.DiagnosticInfo.Length = streamWriter.Position - probe.DiagnosticInfo.Offset; serializationContext.EndProbe(probe); }
private void EndProbeDeserialize( StreamReader streamReader, SerializationContext serializationContext, PropertyMetaData propertyMetaData, object deserializedObject, Probe probe) { probe.DiagnosticInfo.Length = streamReader.Position - probe.DiagnosticInfo.Offset; probe.DiagnosticInfo.Value = deserializedObject; serializationContext.EndProbe(probe); }
public object Deserialize( StreamReader streamReader, SerializationContext serializationContext, PropertyMetaData propertyMetaData = null) { object obj = null; long streamReaderPosition = streamReader.Position; try { obj = this.DeserializerLambda(streamReader, serializationContext); } catch (Exception e) { Probe pb = serializationContext.BeginProbe(); try { streamReader.Position = streamReaderPosition; obj = this.DeserializerLambda(streamReader, serializationContext); } catch (Exception) { } serializationContext.EndProbe(pb); throw new Exception("TypeSerializer failed ("+this.Type.ToString()+")." + Environment.NewLine + e.Message + string.Join(Environment.NewLine, pb.DiagnosticInfo) + Environment.NewLine, e); } return obj; }