cegepmatane / Projet-Specialisation-2022-Clement-Darne

Success History est une application de bureau multi-plateforme permettant d'avoir un suivi de ses notes étudiantes.
1 stars 1 forks source link

Système de sérialisation. #10

Closed ClementDrn closed 2 years ago

ClementDrn commented 2 years ago

Description

Afin de sauvegarder les dossier de notes, il faut pouvoir les sérialiser en fichiers "shist". Ces fichiers sont ensuite lisbles par l'application qui peut les désérialiser.

Exigences

Les exigences pour fermer l'issue :

ClementDrn commented 2 years ago

JsonSerializer

Par défaut toutes les propriétés publiques sont sérialisées par le JsonSerializer (doc). Il est possible d'ignorer une propriété avec [JsonIgnore] (doc).

Par défaut les champs ne sont pas sérialisés, il est possible de les inclure à la sérialisation avec des [JsonInclude] et en activant l'option (doc).

Champs et Propriétés

Pour comprendre la différence entre les champs et propriétés : https://stackoverflow.com/questions/295104/what-is-the-difference-between-a-field-and-a-property

Les listes

https://docs.microsoft.com/fr-fr/dotnet/api/system.collections.generic.list-1?view=net-6.0

ClementDrn commented 2 years ago

La sérialisation fonctionne à merveille. Voici un exemple de dossier sérialiser sous forme JSON :

{
    "Coefficient":1000,
    "Nom":"DUT S3",
    "Notes":null,
    "Groupes":[
        {
            "Coefficient":1000,
            "Nom":"Math\u00E9matiques",
            "Notes":[
                {"Points":19750,"Max":20000,"Coefficient":1000,"Description":"Chapitres 1, 2 et 3"}
            ],
            "Groupes":null
        },
        {
            "Coefficient":1000,
            "Nom":"Algorithmique",
            "Notes":[
                {"Points":18000,"Max":20000,"Coefficient":1000,"Description":"Chapitre 1"},
                {"Points":15000,"Max":20000,"Coefficient":1000,"Description":"Chapitre 2"},
                {"Points":16000,"Max":20000,"Coefficient":1000,"Description":"Chapitre 3"}
            ],
            "Groupes":null
        }
    ]
}
ClementDrn commented 2 years ago

Lors de la désérialisation j'ai fait afficher le nom du dossier dans le titre de la fenêtre pour démontrer le bon fonctionnement du processus.

image

ClementDrn commented 2 years ago

Il faut déplacer le système de sérialisation dans son propre fichier plutôt que dans le Viewmodel de la fenêtre qui l'utilise.