CA2238:請正確實作序列化方法
型別名稱 |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
分類 |
Microsoft.Usage |
中斷變更 |
中斷 - 如果可以在組件 (Assembly) 外部看見方法。 非中斷 - 如果不能在組件外部看見方法。 |
原因
處理序列化事件的方法沒有正確的簽章、傳回型別或可視性。
規則描述
套用下列其中一個序列化事件屬性 (Attribute),即可將序列化事件處理常式指定給方法:
序列化事件處理常式會採用型別 System.Runtime.Serialization.StreamingContext 的單一參數、傳回 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 型別上的基底類別方法