Я рассматриваю класс в решении, которое реализует интерфейс ISerializable
. Он имеет метод GetObjectData
для сериализации, как того требует интерфейс. Здесь нет никакой специальной сериализации, она просто заполняет объект SerializationInfo
именами свойств класса и их значений.
[Serializable]
public class PersonName :ISerializable
{
[DataMember]
public string NamePrefix { get; set; }
[DataMember]
public string GivenName { get; set; }
[DataMember]
public string SurName { get; set; }
public PersonName(string givenName, string surName, string namePrefix)
{
GivenName = givenName;
SurName = surName;
NamePrefix = namePrefix;
}
public PersonName()
{
}
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("NamePrefix",NamePrefix);
info.AddValue("GivenName",GivenName);
info.AddValue("SurName",SurName);
}
}
Из документации, которую я прочитал до сих пор, насколько я понимаю, это то, что произойдет в любом случае классом, отмеченным атрибутом [Serializable]
, и, как вы видите, у класса нет конструктора десериализации, поэтому я и смотрю на это с самого начала. Из того, что я могу сказать, вместо того, чтобы добавлять конструктор десериализации в класс, классу действительно не нужно реализовывать интерфейс ISerializable
в первую очередь. Это правильно?