/// <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(); }
/// <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); }