C # Выполняется ли конструктор Deserialization, а не конструктор по умолчанию?

StackOverflow https://stackoverflow.com//questions/9662734

Вопрос

Я просто знаком с сериализацией объектов в C #.Я задаюсь вопросом, называется ли конструктор десериализации вместо конструктора по умолчанию или в дополнение к.Если это в дополнение к, какой заказы они называются?Например:

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

Это было полезно?

Решение

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

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

Пожалуйста, обратите внимание на « ...: это () " - синтаксис - но в вашем особом случае вам не нужно!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top