Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }