2012-10-23 86 views
3

我們有聲納報告說,我們項目中的很多類違反了MissingSerializationConstructorRule,但是類和它的基類都沒有實現任何Iserializable接口,任何人都不知道爲什麼?爲什麼一個類沒有實現ISerializable接口違反MissingSerializationConstructorRule

例如聲納說:

public class CommentPage : RmdsPublicationPage, ICommentPage 
    { 
*MissingSerializationConstructorRule  
The required constructor for ISerializable is not present in this type.* 
    public CommentPage() 
    { 
     this["COMMENTTXT"] = null; 

其中相應的類

public class CommentPage : RmdsPublicationPage, ICommentPage 
{ 
    public CommentPage() 
    { 
     // do something 
    } 
    public void Update(string comment) 
    { 
     //something else 
    } 
} 

兩個接口沒有任何實現ISerializable的,即

public class RmdsPublicationPage : Dictionary<string, object>, IRmdsPublicationPage 

public interface IRmdsPublicationPage : IDictionary<string, object>, IDisposable 
+0

ICommentPage?怎麼樣?你還沒有發佈。 –

+0

從ISerializable派生的任何子類必須實現特殊的構造函數,否則它們將不能正確反序列化。字典,所以你的孩子應該從它的類。 – LightStriker

+0

啊,謝謝你們,我正在研究IDictionary而不是字典。 –

回答

3

Dictionary(TKey, TValue)實現了ISerializable

[SerializableAttribute] 
[ComVisibleAttribute(false)] 
public class Dictionary<TKey, TValue> : IDictionary<TKey, TValue>, 
    ICollection<KeyValuePair<TKey, TValue>>, IDictionary, ICollection, 
    IReadOnlyDictionary<TKey, TValue>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, 
    IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, ISerializable, 
    IDeserializationCallback 
相關問題