Skip to content

Gendarme.Rules.Serialization.CallBaseMethodsOnISerializableTypesRule(2.10)

Sebastien Pouliot edited this page Feb 9, 2011 · 3 revisions

CallBaseMethodsOnISerializableTypesRule

Assembly: Gendarme.Rules.Serialization
Version: 2.10

Description

This rule checks types that implement the System.ISerializable interface and fires if either the serialization constructor or the GetObjectData method does not call it's base type, potentially breaking the serialization process.

Examples

Bad example:

[Serializable]
public class Base : ISerializable {
    // ...
}
[Serializable]
public class Bad : Base {
    int value;
    protected BadDerived (SerializationInfo info, StreamingContext context)
    {
        value = info.GetInt32 ("value");
    }
    public override void GetObjectData (SerializationInfo info, StreamingContext context)
    {
        info.AddValue ("value", value);
    }
}

Good example:

[Serializable]
public class Base : ISerializable {
    // ...
}
[Serializable]
public class Good : Base {
    int value;
    protected BadDerived (SerializationInfo info, StreamingContext context) : base (info, context)
    {
        value = info.GetInt32 ("value");
    }
    public override void GetObjectData (SerializationInfo info, StreamingContext context)
    {
        info.AddValue ("value", value);
        base.GetObjectData (info, context);
    }
}

Notes

  • This rule is available since Gendarme 2.2
Clone this wiki locally