CA2238: serialization 메서드를 올바르게 구현하십시오.
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
범주 |
Microsoft.Usage |
변경 수준 |
주요 변경 - 메서드가 어셈블리 외부에 표시되는 경우, 주요 변경 아님 - 메서드가 어셈블리 외부에 표시되지 않는 경우 |
원인
serialization 이벤트를 처리하는 메서드에 올바른 시그니처, 반환 형식 또는 노출 수준이 없습니다.
규칙 설명
다음의 serialization 이벤트 특성 중 하나를 적용하여 메서드를 serialization 이벤트로 지정합니다.
serialization 이벤트 처리기는 System.Runtime.Serialization.StreamingContext 형식의 단일 매개 변수를 사용하고, void를 반환하며, private 노출 수준을 가집니다.
위반 문제를 해결하는 방법
이 규칙 위반 문제를 해결하려면 serialization 이벤트 처리기의 시그너처, 반환 형식 또는 노출 수준을 수정합니다.
경고를 표시하지 않는 경우
이 규칙에서는 경고를 표시해야 합니다.
예제
다음 예제에서는 올바르게 선언된 serialization 이벤트 처리기를 보여 줍니다.
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: serialization 생성자를 구현하십시오.
CA2235: 모두 serialize할 수 없는 필드로 표시하십시오.
CA2237: ISerializable 형식을 SerializableAttribute로 표시하십시오.