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