C # Получает ли конструктор десериализации INSTEAD конструктора по умолчанию? - PullRequest
1 голос
/ 12 марта 2012

Я только знакомлюсь с сериализацией объектов в C #. Мне интересно, если конструктор десериализации называется INSTEAD OF конструктор по умолчанию или IN ADDITION TO. Если это ДОПОЛНИТЕЛЬНО, то в каком порядке они называются? Например:

[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));
    }
}

1 Ответ

2 голосов
/ 12 марта 2012

Нет, он будет называться «вместо» по умолчанию - но вы можете инициализировать свой список следующим образом:

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 ()"- синтаксис - но в вашем особом случае вам не нужно!

...