Skip to content

Releases: Carnagion/GDSerializer

GDSerializer 2.0.3

10 Aug 06:48
d60c326
Compare
Choose a tag to compare

Bugfixes and minor tweaks.

Bugfixes

  • Serializer now properly accounts an object's members' actual types when serializing them
  • Serializer no longer considers properties with compiler-generated get 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
  • XMLEscape() Godot extension method is no longer used as the C# XML API does it automatically

GDSerializer 2.0.2

07 Aug 16:10
df24477
Compare
Choose a tag to compare

Minor (yet significant) bugfix.

Bugfixes

  • Avoid using ContainsAll() as it is bugged

GDSerializer 2.0.1

07 Aug 15:09
eb2f045
Compare
Choose a tag to compare

Minor (yet significant) bugfix.

Bugfixes

  • Fix Serializer comparing mandatory fields/properties with deserialized values rather than deserialized fields/properties

GDSerializer 2.0.0

07 Aug 11:50
9916005
Compare
Choose a tag to compare

Improvements and major API changes.

Additions

  • Add serializer for Godot nodes and scenes
  • Add serializer for XML nodes
  • Add serializer for Types

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 a List<T> directly rather than a copy

GDSerializer 1.1.0

25 Jun 08:06
989fb37
Compare
Choose a tag to compare

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 the Godot.Serialization.Utility.Exceptions namespace, but instead in Godot.Serialization

Bugfixes

  • DictionarySerializer now uses its item serializer during deserialization
    • Was earlier creating and using a Serializer

GDSerializer 1.0.0

10 Jun 11:32
399612e
Compare
Choose a tag to compare

Refactorings and new features.

Additions

  • Enums can now be (de)serialized using the constant name, rather than <value__>...</value__>
    • Handled by EnumSerializer
  • 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 of SimpleSerializer and VectorSerializer

GDSerializer 0.2.0

18 May 15:22
70726e7
Compare
Choose a tag to compare

Bugfixes and new features.

Additions

  • Arrays can now be (de)serialized
    • Handled by ArraySerializer

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 the Type attribute to get the correct type if it is different

GDSerializer 0.1.2

16 May 21:50
1e51d5a
Compare
Choose a tag to compare

Bugfixes and minor API changes.

Changes

  • ISerializer.Serialize(object, XmlDocument?) is now ISerializer.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)

Bugfixes

  • Specialized serializers no longer inherit from Serializer
    • Fixes recursion issues with virtual methods

GDSerializer 0.1.1

14 May 11:28
bb75ca6
Compare
Choose a tag to compare

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 uses OrderedDictionary<Type, ISerializer>
    • Gets rid of issues with insertion order that may arise when finding specialized serializer types

GDSerializer 0.1.0

12 May 22:00
Compare
Choose a tag to compare

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)