Я ищу класс в решении, которое реализует интерфейс 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
. Это правильно?