Осуществляется ли реализация интерфейса ISerializable, необходимого, когда не реализуется никакая настраиваемая сериализация / десериализация

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

13
задан jaywon 19 January 2012 в 20:59
поделиться