Releases: Carnagion/GDSerializer
Releases · Carnagion/GDSerializer
GDSerializer 2.0.3
Bugfixes and minor tweaks.
Bugfixes
Serializer
now properly accounts an object's members' actual types when serializing themSerializer
no longer considers properties with compiler-generatedget
accessors to be non-serializable- Allows auto-properties to be (de)serialized as intended
Tweaks
Serializer
now uses the name "Object" on the XML element for all serialized objects- The
Type
attribute is used to record the actual type
- The
XMLEscape()
Godot extension method is no longer used as the C# XML API does it automatically
GDSerializer 2.0.2
Minor (yet significant) bugfix.
Bugfixes
- Avoid using
ContainsAll()
as it is bugged
GDSerializer 2.0.1
Minor (yet significant) bugfix.
Bugfixes
- Fix
Serializer
comparing mandatory fields/properties with deserialized values rather than deserialized fields/properties
GDSerializer 2.0.0
Improvements and major API changes.
Additions
- Add serializer for Godot nodes and scenes
- Add serializer for XML nodes
- Add serializer for
Type
s
Changes
- Improve parser for type names
- Parse type name as written in code
- Add support for serializing open generic types and multi-dimensional array types
- Breaking change
- Remove generic
Serialize<T>()
method - Refactor member (de)serialization into separate methods
- Expose
CollectionSerializer
's item serializer for access by inheriting types - Refactor LINQ query syntax into method chain syntax
- Use Godot's provided
XMLEscape()
methods when storing type names in XML - Avoid handling exceptions in specialized serializer types
- Make
EnumerableSerializer
return aList<T>
directly rather than a copy
GDSerializer 1.1.0
Refactorings and new features.
Additions
- XML nodes can now "refer" to other XML nodes using a unique ID
- This allows deserialized objects to share references to the same object for their fields or properties
Changes
SerializationException
is no longer in theGodot.Serialization.Utility.Exceptions
namespace, but instead inGodot.Serialization
Bugfixes
DictionarySerializer
now uses its item serializer during deserialization- Was earlier creating and using a
Serializer
- Was earlier creating and using a
GDSerializer 1.0.0
Refactorings and new features.
Additions
- Enums can now be (de)serialized using the constant name, rather than
<value__>...</value__>
- Handled by
EnumSerializer
- Handled by
- The
[AfterSerialization]
and[AfterDeserialization]
attributes allow static and instance methods to be called after (de)serialization
Changes
Serializer
no longer uses a static dictionary- It instead uses an instance one passed during construction
- Prevents multiple
Serializer
instances from interfering with each other
- Serializer classes that depend on another serializer now require an
ISerializer
reference during construction Serializer
no longer creates multiple instances ofSimpleSerializer
andVectorSerializer
GDSerializer 0.2.0
Bugfixes and new features.
Additions
- Arrays can now be (de)serialized
- Handled by
ArraySerializer
- Handled by
Changes
- The way
Serializer
searches for a specialized serializer for a type has been refactored, but should still functionally work the same
Bugfixes
CollectionSerializer
and its inheriting serializers no longer assume that all items in a collection are of the same type, and use theType
attribute to get the correct type if it is different
GDSerializer 0.1.2
Bugfixes and minor API changes.
Changes
ISerializer.Serialize(object, XmlDocument?)
is nowISerializer.Serialize(object, Type?)
- Easier to use
XmlDocument.CloneNode(XmlNode)
to clone and add nodes from different XML document contexts - Allows serializing as a different type (eg. the base type)
- Easier to use
Bugfixes
- Specialized serializers no longer inherit from
Serializer
- Fixes recursion issues with virtual methods
GDSerializer 0.1.1
Bugfixes.
Additions
- Utility data structure
OrderedDictionary<TKey, TValue>
Bugfixes
- Fixed issues with indefinite recursion in the
Serializer()
constructor (or that of its subclasses) Serializer.Specialized
now usesOrderedDictionary<Type, ISerializer>
- Gets rid of issues with insertion order that may arise when finding specialized serializer types
GDSerializer 0.1.0
Initial release.
Additions
ISerializer
interface- Default serializer implementation (
Serializer
)- Can be configured to use specialized serializers for specific types
- Serializer for simple types (
SimpleSerializer
) - Serializer for collections (
CollectionSerializer
) - Serializer for enumerables (
EnumerableSerializer
) - Serializer for dictionaries (
DictionarySerializer
) - Serializer for vectors (
VectorSerializer
)