public abstract void WriteCsvHeader(CsvWriter writer, Type objectType, CsvSerializerContext serializer, CsvHeaderNamingContext naming);
public abstract object ReadCsv(CsvReader reader, Type objectType, CsvSerializerContext serializer, CsvHeaderNamingContext naming);
protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref TimestampsDiff result) { throw new NotSupportedException(); }
protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming) { writer.WriteField(naming.Get(nameof(TimestampsDiff.Count))); writer.WriteField(naming.Get(nameof(TimestampsDiff.Duration))); writer.WriteField(naming.Get(nameof(TimestampsDiff.NewDuration))); writer.WriteField(naming.Get(nameof(TimestampsDiff.StartOffset))); writer.WriteField(naming.Get(nameof(TimestampsDiff.EndOffset))); writer.WriteField(naming.Get(nameof(TimestampsDiff.DurationChange))); }
protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming) { writer.WriteField(naming.Get(nameof(MultipleValues.Id))); writer.WriteField(naming.Get(nameof(MultipleValues.Name))); }
protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming) { writer.WriteField(naming.Get(nameof(EyeValidationPointResult.Accuracy))); writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PrecisionSD))); writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PrecisionRMS))); writer.WriteField(naming.Get(nameof(EyeValidationPointResult.ValidRatio))); writer.WriteField(naming.Get(nameof(EyeValidationPointResult.Distance))); writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PupilDiameter))); }
protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref CompositeStruct result) { int id; double duration; if ( reader.TryGetField <int>(naming.Get(nameof(CompositeStruct.Id)), out id) && reader.TryGetField <double>(naming.Get(nameof(CompositeStruct.Duration)), out duration) ) { result = new CompositeStruct() { Id = id, Duration = duration }; return(true); } return(false); }
protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref GazeData result) { ITimestampedData timestampedData; EyeData leftEye; EyeData rightEye; if ( TryGetMember <ITimestampedData>(reader, serializer, naming, out timestampedData) && TryGetMember <EyeData>(reader, serializer, naming, "Left", out leftEye) && TryGetMember <EyeData>(reader, serializer, naming, "Right", out rightEye) ) { result = new GazeData(leftEye, rightEye, timestampedData.Timestamp); return(true); } return(false); }
protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming) { serializer.WriteHeader <CompositeStruct?>(writer, naming, nameof(SingleNullableStructValue.Value)); }
public void ReadCsv_CompositeObject_RecordsWithNullValues() { var serializer = new CsvSerializerContext() { ThrowOnFailedDeserialize = false }; var converter = new CompositeObjectCsvConverter(); serializer.Converters.Add(converter); serializer.Converters.Add(new SingleIntValueCsvConverter()); serializer.Converters.Add(new CompositeValueCsvConverter()); string[] csv = new string[] { "Single,CompositeId,CompositeName,Double", // header "15,1,,52.1", // first record ",2,Strawberry,-15.2", // second record "0,,,0", // third record ",,,", // fourth null record "" // empty line after the last record }; List <CompositeObject> result = new List <CompositeObject>(); using (var source = new StringReader(String.Join(Environment.NewLine, csv))) using (var reader = new CsvReader(source, serializer.Configuration)) { var naming = new CsvHeaderNamingContext(); if (reader.Read()) { converter.ReadCsvHeader(reader, serializer); } while (reader.Read()) { result.Add((CompositeObject)converter.ReadCsv(reader, typeof(CompositeObject), serializer, naming)); } } Assert.AreEqual(4, result.Count); Assert.IsNotNull(result[0]); Assert.IsNotNull(result[0].Single); Assert.AreEqual(15, result[0].Single.Value); Assert.IsNotNull(result[0].Composite); Assert.AreEqual(1, result[0].Composite.Id); Assert.AreEqual(String.Empty, result[0].Composite.Name); Assert.AreEqual(52.1, result[0].Double); Assert.IsNotNull(result[1]); Assert.IsNull(result[1].Single); Assert.IsNotNull(result[1].Composite); Assert.AreEqual(2, result[1].Composite.Id); Assert.AreEqual("Strawberry", result[1].Composite.Name); Assert.AreEqual(-15.2, result[1].Double); Assert.IsNotNull(result[2]); Assert.IsNotNull(result[2].Single); Assert.AreEqual(0, result[2].Single.Value); Assert.IsNull(result[2].Composite); Assert.AreEqual(0, result[2].Double); Assert.IsNull(result[3]); }
protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref SingleNullableStructValue result) { CompositeStruct?value; if (TryGetMember <CompositeStruct?>(reader, serializer, naming, nameof(SingleNullableStructValue.Value), out value)) { result = new SingleNullableStructValue() { Value = value }; return(true); } return(false); }
protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming) { writer.WriteField(naming.Get(_timestampFieldName)); }
protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref ITimestampedData result) { DateTimeOffset timestamp; if (reader.TryGetField <DateTimeOffset>(naming.Get(_timestampFieldName), out timestamp)) { result = new TimestampedData(timestamp); return(true); } return(false); }
protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref SingleNullableIntValue result) { int?value; if (reader.TryGetField <int?>(naming.GetDefault(nameof(SingleNullableIntValue.Value)), out value)) { result = new SingleNullableIntValue() { Value = value }; return(true); } return(false); }
protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming) { writer.WriteField(naming.Get(nameof(CompositeStruct.Id))); writer.WriteField(naming.Get(nameof(CompositeStruct.Duration))); }
protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming) { writer.WriteField(naming.GetDefault(nameof(SingleNullableIntValue.Value))); }
protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref EyeValidationPointResult result) { double?accuracy; double?precisionSD; double?precisionRMS; double validRatio; double?distance; double?pupilDiameter; if ( reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.Accuracy)), out accuracy) && reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PrecisionSD)), out precisionSD) && reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PrecisionRMS)), out precisionRMS) && reader.TryGetField <double>(naming.Get(nameof(EyeValidationPointResult.ValidRatio)), out validRatio) && reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.Distance)), out distance) && reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PupilDiameter)), out pupilDiameter) ) { result = new EyeValidationPointResult ( accuracy, precisionSD, precisionRMS, validRatio, distance, pupilDiameter ); return(true); } return(false); }
protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming) { serializer.WriteHeader <ITimestampedData>(writer, naming); serializer.WriteHeader <EyeData>(writer, naming, "Left"); serializer.WriteHeader <EyeData>(writer, naming, "Right"); }
protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref MultipleValues result) { int id; string name; if (reader.TryGetField <int>(naming.Get(nameof(MultipleValues.Id)), out id) && reader.TryGetField <string>(naming.Get(nameof(MultipleValues.Name)), out name)) { result = new MultipleValues() { Id = id, Name = name }; return(true); } return(false); }