Serializer.overrideDeserializer

Overrides a globally registered deserializer for the given type with a deserializer local to the receiver.

The receiver will first check if a local deserializer is registered, otherwise a global deserializer will be used (if available).

  1. void overrideDeserializer(void delegate(ref Base, Serializer, Data) dg)
  2. void overrideDeserializer(void delegate(ref T, Serializer, Data) dg)
  3. void overrideDeserializer(void function(ref Base, Serializer, Data) func)
    class Serializer
    void
    overrideDeserializer
    (
    Derived
    Base
    )
    (
    void function
    (
    ref Base
    ,,)
    func
    )
    if (
    is(T == class) ||
    is(T == interface)
    )
  4. void overrideDeserializer(void function(ref T, Serializer, Data) func)

Parameters

func void function
(
ref Base
,,)

the callback that will be called when value of the given type is about to be deserialized

Examples

class Base {}
class Foo : Base {}

auto archive = new XmlArchive!();
auto serializer = new Serializer(archive);

void func (ref Base value, Serializer serializer, Data key) {
    // perform deserialization
}

Serializer.registerSerializer!(Foo)(&func);

void overrideFunc (ref Base value, Serializer serializer, Data key) {
    // this will override the above deserializer
}

serializer.overrideSerializer!(Foo)(&overrideFunc);

Meta