L'implémentation de l'interface ISerializable est nécessaire lorsque vous ne mettez en œuvre aucune sérialisation / désérialisation personnalisée

Je suis à la recherche à une classe dans une solution qui implémente l' ISerializable interface. Il a un GetObjectData méthode pour la sérialisation comme requis par l'interface. Il n'y a pas toute la sérialisation personnalisée qui se passe ici, c'est tout simplement le remplissage de la SerializationInfo objet avec les noms des propriétés de la classe et de leurs valeurs.

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

À partir de la documentation que j'ai lu jusqu'à présent, ce que je comprends, c'est ce qui se passera de toute façon par la classe d'être marqué avec le [Serializable] attribut, et comme vous pouvez le voir, la classe n'a pas une désérialisation constructeur, c'est pourquoi je suis à la recherche pour commencer. De ce que je peux dire, plutôt que d'avoir besoin d'ajouter de la désérialisation constructeur de la classe, la classe n'a pas vraiment besoin pour mettre en œuvre les ISerializable interface en premier lieu. Est-ce exact?

source d'informationauteur jaywon