Partage
  • Partager sur Facebook
  • Partager sur Twitter

Simplifier accesseurs de propriétés

    18 mai 2019 à 11:44:11

    Salut à tous,

    J'ai une question assez bête, car le code marche mais je souhaite surtout savoir si c'est "correct" de faire ça en C#.

    Je crée une appli qui correspond surtout à des séries de formulaires pour calculer des scores (but professionnel). Avec une logique MVVM, j'ai donc des séries de propriétés pour lesquelles le setter doit déclencher l'évènement PropertyChange. Je ne peux donc pas utiliser des getters/setters auto-implémentés. Dans mon premier essai, j'ai donc créé un champ private pour chaque propriété qui sera bindée dans ma view XAML. Mais afin de simplifier grandement l'écriture du code, j'ai ensuite fait ceci :

    public int MaPropriete
    { get => MaPropriete; set => SetPropertyAndNotify(value, "MaPropriete"); }


    Est-ce que c'est valide, logiquement, de diriger le getter vers la propriété ? Vu que ça marche j'imagine que le getter dirige donc vers le champ correspondant en mémoire, mais dans mon esprit au début j'avais l'impression que get => dirigeant vers une propriété allait diriger vers le getter, créant ainsi une sorte de boucle get => get => get =>...

    Bref, ça marche, j'imagine que le compilateur fait le taf et qu'un getter dirige forcément vers un champ +/- une opération sur ce champ, mais est-ce que c'est valide en termes de bonnes pratiques ? Ou est-ce que je m'expose éventuellement à des problèmes que je n'ai pas encore imaginés ?

    Merci !

    • Partager sur Facebook
    • Partager sur Twitter
      19 mai 2019 à 16:02:38

      Vu que ça ne passionnait pas les foules, j'ai fini par trouver plusieurs discussions où tout n'est pas clair, j'ai fini par tomber sur celle-ci où c'est encore moins clair et où c'est justement le sujet de la discussion...

      Si ça intéresse du monde : https//www.reddit.com/r/csharp/comments/46f3cu/why_does_c_permit_recursive_properties/

      Dans mon cas, j'ai retesté le même code qu'hier, j'obtiens maintenant une exception non gérée comme dans le thread, mais ça a l'air d'être assez aléatoire... Bref j'ai du repasser par un champ.

      • Partager sur Facebook
      • Partager sur Twitter
        20 mai 2019 à 17:50:43

        Je pense que l'optimiseur .NET peut faire varier le résultat.

        Ça tombe en marche.

        L'utilisation d'attributs custom ou venu avec C#6 peuvent largement simplifier cette gestion.

        https://stackoverflow.com/questions/38896344/best-way-to-notify-property-change-when-field-is-depending-on-another

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

        Simplifier accesseurs de propriétés

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown