C#


CSHARP.CLASS.SER.FNON : Nonserializable Field (C#)

要旨

A non-transient field of a serializable class might hold a non-serializable value.

Serialization allows one to dump an object into a file and recover (deserialize) it later. For this to work, C# requires the class of the object to implement the System.Runtime.Serialization.ISerializable interface. Moreover, all instance non-transient fields of the class must be serializable themselves. For inner non-static classes, also the outer class must be serializable. In order to distinguish dumps of objects for distinct versions of the same class, it is required that serializable classes define a static field containing the serial version of the class.

プロパティ

クラス名 Nonserializable Field (C#)
日本語クラス名 Nonserializable Field (C#)
クラス分類 信頼性 (reliability)
ニーモニック CSHARP.CLASS.SER.FNON
カテゴリー
CWE CWE:913 Improper Control of Dynamically-Managed Code Resources
対応言語 C# で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Nonserializable Field (C#)"

using System.Runtime.Serialization;
namespace DocumentationExamples
{
    public class Serialization : ISerializable
    {
        public static void Main(string[] args)
        { }

        private readonly object f;         // Nonserializable Field (C#) warning issued here 
        private readonly SerializationC.Inner inner;

        public Serialization(object f)
        {
            this.f = f;
            inner = new SerializationC.Inner();
        }
        public void GetObjectData(SerializationInfo info, StreamingContext context) { }
    }
    public class SerializationC
    {
        public class Inner : ISerializable  // Nonserializable Outer Class (C#) warning issued here 
        {
            public void GetObjectData(SerializationInfo info, StreamingContext context) { }
        }
    }
    
}

解決法

Guarantee that all instance non-transient fields of a serializable class are themselves serializable. Make inner serializable classes have a serializable outer class, or make them static.

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。