/// <summary> /// Deserializes an object from a KeyValues representation in a stream. /// </summary> /// <param name="stream">The stream to deserialize from.</param> /// <param name="options">Options to use that can influence the deserialization process.</param> /// <returns>A <typeparamref name="TObject" /> instance representing the KeyValues structure in the stream.</returns> /// <typeparam name="TObject">The type of object to deserialize.</typeparam>; public TObject Deserialize <TObject>(Stream stream, KVSerializerOptions options = null) { Require.NotNull(stream, nameof(stream)); var @object = Deserialize(stream, options ?? KVSerializerOptions.DefaultOptions); var typedObject = ObjectCopier.MakeObject <TObject>(@object); return(typedObject); }
/// <summary> /// Serializes a KeyValue object into stream in plain text.. /// </summary> /// <param name="stream">The stream to serialize into.</param> /// <param name="data">The data to serialize.</param> /// <param name="name">The top-level object name</param> /// <param name="options">Options to use that can influence the serialization process.</param> /// <typeparam name="TData">The type of object to serialize.</typeparam> public void Serialize <TData>(Stream stream, TData data, string name, KvSerializerOptions options = null) { Require.NotNull(stream, nameof(stream)); if (data == null) { throw new ArgumentNullException(nameof(data)); } Require.NotNull(name, nameof(name)); var kvObjectTree = ObjectCopier.FromObject(data, name); Serialize(stream, kvObjectTree, options); }
public override object ToType(Type conversionType, IFormatProvider provider) => ObjectCopier.MakeObjectCollection(conversionType, this);