CA2238: シリアル化メソッドを正しく実装します
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
[カテゴリ] |
Microsoft.Usage |
互換性に影響する変更点 |
あり – メソッドがアセンブリの外部で参照できる場合 なし – メソッドがアセンブリの外部で参照できない場合 |
原因
シリアル化イベントを処理するメソッドに、適切なシグネチャ、戻り値の型、または参照範囲がありません。
規則の説明
次のシリアル化イベント属性のいずれかを適用すると、メソッドはシリアル化のイベント ハンドラーに指定されます。
シリアル化イベント ハンドラーでは、System.Runtime.Serialization.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 を正しく実装します
CA2235: すべてのシリアル化不可能なフィールドを設定します
CA2237: ISerializable 型を SerializableAttribute に設定します