Exemplo n.º 1
0
        /// <summary>Deserializes a value type from a <see cref="DbEntry"/> instance
        /// using a specific <see cref="Field{T, F}"/> instance.</summary>
        /// <remarks>Passing the value type by reference avoids copy overhead.</remarks>
        /// <typeparam name="T">Value type to deserialize.</typeparam>
        /// <param name="value">Struct instance to deserialize.</param>
        /// <param name="isNull">Returns <c>true</c> if a <c>null</c> is deserialized,
        /// in which case the <c>value</c> parameter is ignored.</param>
        /// <param name="entry"><see cref="DbEntry"/> instance containing the serialized data.</param>
        /// <param name="field"><see cref="ValueField{T, Formatter}"/> instance that
        /// deserializes the <c>entry</c>argument.</param>
        public void FromDbEntry <T>(ref T value, out bool isNull, ref DbEntry entry, ValueField <T, Formatter> field)
            where T : struct
        {
            int index = entry.Start;

            InitDeserialization(entry.Buffer, index);
            field.Deserialize(ref value, out isNull);
            index = FinishDeserialization();
        }
Exemplo n.º 2
0
        /// <overloads>Deserializes an object graph from a <see cref="DbEntry"/> instance.</overloads>
        /// <summary>Deserializes a nullable value type from a <see cref="DbEntry"/> instance
        /// using a specific <see cref="Field{T, F}"/> instance.</summary>
        /// <typeparam name="T">Value type to deserialize.</typeparam>
        /// <param name="entry"><see cref="DbEntry"/> instance containing the serialized data.</param>
        /// <param name="field"><see cref="ValueField{T, Formatter}"/> instance that
        /// deserializes the <c>entry</c>argument.</param>
        /// <returns>Deserialized struct instance, or <c>null</c>.</returns>
        public T?FromDbEntry <T>(ref DbEntry entry, ValueField <T, Formatter> field)
            where T : struct
        {
            int index = entry.Start;

            InitDeserialization(entry.Buffer, index);
            T?result = field.Deserialize();

            index = FinishDeserialization();
            return(result);
        }