/// <summary> /// Write data as described by task /// </summary> /// <param name="task">How to serialize object</param> /// <param name="value">Object to serialize</param> /// <returns></returns> private static bool WriteParserData(StreamDataParserTask task, object value) { IStreamDataParser parser = GetParser(task.StreamType); if (typeof(IStreamDataFinalizer).IsAssignableFrom(task.DataType)) { var finalizer = (IStreamDataFinalizer)value; finalizer.OnSerialize(); } dynamic tmpVal; // Cast value, if necessary. if (task.StreamType != task.DataType) { tmpVal = Convert.ChangeType(value, task.StreamType); } else { tmpVal = value; } var result = parser.WriteObject(task, tmpVal); return(result); }
/// <summary> /// Retrieve data as described by task /// </summary> /// <param name="task">How to retrieve value</param> /// <param name="value">Value</param> /// <returns></returns> private static bool GetParserData(StreamDataParserTask task, out dynamic value) { IStreamDataParser parser = GetParser(task.StreamType); dynamic tmpVal; bool result; result = parser.GetObject(task, out tmpVal); // Cast value, if necessary. if (task.StreamType != task.DataType) { value = Convert.ChangeType(tmpVal, task.DataType); } else { value = tmpVal; } if (typeof(IStreamDataFinalizer).IsAssignableFrom(task.DataType)) { var finalizer = (IStreamDataFinalizer)value; finalizer.OnDeserialize(); } return(result); }