CA2238: シリアル化メソッドを正しく実装します

TypeName

ImplementSerializationMethodsCorrectly

CheckId

CA2238

分類

Microsoft.Usage

互換性に影響する変更点

あり – メソッドがアセンブリの外部で参照できる場合

なし – メソッドがアセンブリの外部で参照できない場合

原因

シリアル化イベントを処理するメソッドに、適切なシグネチャ、戻り値の型、または参照範囲がありません。

規則の説明

次のシリアル化イベント属性のいずれかを適用すると、メソッドはシリアル化のイベント ハンドラーに指定されます。

シリアル化イベント ハンドラーでは、StreamingContext 型のパラメーターを 1 つ使用し、void を返します。参照範囲は private です。

違反の修正方法

この規則違反を修正するには、シリアル化イベント ハンドラーのシグネチャ、戻り値の型、または参照範囲を正しく指定します。

警告を抑制する状況

この規則による警告は抑制しないでください。

使用例

正しく宣言したシリアル化イベント ハンドラーを次の例に示します。

Imports System
Imports System.Runtime.Serialization

Namespace UsageLibrary

   <SerializableAttribute> _ 
   Public Class SerializationEventHandlers

      <OnSerializingAttribute> _ 
      Private Sub OnSerializing(context As StreamingContext) 
      End Sub

      <OnSerializedAttribute> _ 
      Private Sub OnSerialized(context As StreamingContext) 
      End Sub

      <OnDeserializingAttribute> _ 
      Private Sub OnDeserializing(context As StreamingContext)
      End Sub

      <OnDeserializedAttribute> _ 
      Private Sub OnDeserialized(context As StreamingContext)
      End Sub 

   End Class 

End Namespace
using System;
using System.Runtime.Serialization;

namespace UsageLibrary
{
   [SerializableAttribute]
   public class SerializationEventHandlers
   {
      [OnSerializingAttribute]
      void OnSerializing(StreamingContext context) {}

      [OnSerializedAttribute]
      void OnSerialized(StreamingContext context) {}

      [OnDeserializingAttribute]
      void OnDeserializing(StreamingContext context) {}

      [OnDeserializedAttribute]
      void OnDeserialized(StreamingContext context) {}
   }
}

関連規則

CA2236: ISerializable 型で基本クラス メソッドを呼び出します

CA2240: ISerializable を正しく実装します

CA2229: シリアル化コンストラクターを実装します

CA2235: すべてのシリアル化不可能なフィールドを設定します

CA2237: ISerializable 型を SerializableAttribute に設定します

CA2239: オプションのフィールドに逆シリアル化メソッドを指定します

CA2120: シリアル化コンストラクターをセキュリティで保護します