1

C#でのオブジェクトのシリアル化に慣れてきたところです。デシリアライズコンストラクターがデフォルトコンストラクターのINSTEADOFと呼ばれるのか、それともINADDITIONTOと呼ばれるのか疑問に思います。に加えて、これらはどのような順序で呼び出されますか?例えば:

[Serializable()]
public class ReadCache : ISerializable
{
    protected ArrayList notifiedURLs;

    // Default constructor
    public ReadCache()
    {
        notifiedURLs = new ArrayList();
    }

    // Deserialization constructor.
    public ReadCache(SerializationInfo info, StreamingContext ctxt)
    {
        //Get the values from info and assign them to the appropriate properties
        notifiedURLs = (ArrayList)info.GetValue("notifiedURLs", typeof(ArrayList));
    }
}
4

1 に答える 1

2

いいえ、デフォルトの「代わりに」呼び出されますが、次のような方法でリストを初期化できます。

public ReadCache(SerializationInfo info, StreamingContext ctxt)
  : this()
{
    //Get the values from info and assign them to the appropriate properties
    notifiedURLs = (ArrayList)info.GetValue("notifiedURLs", typeof(ArrayList));
}

" ... : this() " - 構文に注意してください- しかし、あなたの特別なケースではそうする必要はありません!

于 2012-03-12T06:47:04.797 に答える