CA2237: Mark ISerializable types with SerializableAttribute
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at CA2237: Mark ISerializable types with SerializableAttribute.
TypeName|MarkISerializableTypesWithSerializable|
|CheckId|CA2237|
|Category|Microsoft.Usage|
|Breaking Change|Non Breaking|
An externally visible type implements the System.Runtime.Serialization.ISerializable interface and the type is not marked with the System.SerializableAttribute attribute. The rule ignores derived types whose base type is not serializable.
To be recognized by the common language runtime as serializable, types must be marked with the SerializableAttribute attribute even if the type uses a custom serialization routine through implementation of the ISerializable interface.
To fix a violation of this rule, apply the SerializableAttribute attribute to the type.
Do not suppress a warning from this rule for exception classes because they must be serializable to work correctly across application domains.
The following example shows a type that violates the rule. Uncomment the SerializableAttribute attribute line to satisfy the rule.
CA2236: Call base class methods on ISerializable types
CA2240: Implement ISerializable correctly
CA2229: Implement serialization constructors
CA2238: Implement serialization methods correctly
CA2235: Mark all non-serializable fields