CA2235: Mark all non-serializable fields
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 CA2235: Mark all non-serializable fields.
TypeName|MarkAllNonSerializableFields|
|CheckId|CA2235|
|Category|Microsoft.Usage|
|Breaking Change|Non Breaking|
An instance field of a type that is not serializable is declared in a type that is serializable.
A serializable type is one that is marked with the System.SerializableAttribute attribute. When the type is serialized, a System.Runtime.Serialization.SerializationException exception is thrown if a type contains an instance field of a type that is not serializable.
To fix a violation of this rule, apply the System.NonSerializedAttribute attribute to the field that is not serializable.
Only suppress a warning from this rule if a System.Runtime.Serialization.ISerializationSurrogate type is declared that allows instances of the field to be serialized and deserialized.
The following example shows a type that violates the rule and a type that satisfies the rule.
CA2236: Call base class methods on ISerializable types
CA2240: Implement ISerializable correctly
CA2229: Implement serialization constructors
CA2238: Implement serialization methods correctly
CA2237: Mark ISerializable types with SerializableAttribute