none
Question conception : TreeNode/TreeView RRS feed

  • Question

  • Bonjour,

    J'ai un programme découpé de cette manière:

     - un exe qui contient le code de l'UI

    - une dll, mon noyau fonctionnel

    Voici mon problème:

    Dans mon noyau fonctionnel, je crée 2 arbres (en utilisant le type TreeNode). Un de ces arbre est affiché dans une TreeView et je peux donc utiliser l'attribut FullPath sur les noeuds. Cependant, j'ai aussi besoin d'utiliser cet attribut sur mon 2ème arbre, qui n'a pas de TreeView.

    Est-ce une erreur de conception d'ajouter un TreeView dans mon noyau fonctionnel pour avoir accès à l'attribut FullPath des noeuds sans utiliser pour autant le TreeView ? (c'est à dire d'incorporer des références à TreeView, donc Control et Form dans mon noyau fonctionnel)

    Est-il préférable d'utiliser une méthode récursive pour calculer moi-même le FullPath ?

    Autre point : Je souhaiterais filtrer un de mes arbres pour n'afficher que ses noeuds et pas ses feuilles. Est-il correcte de redéfinir le getter IsVisible (et donc créer un objet MyTreeNode : TreeNode) ?

    Merci d'avance pour votre aide :)

    vendredi 25 novembre 2011 12:16

Réponses

  • Bonjour,

    Il ne faut pas utiliser le TreeNode dans votre couche métier (noyau fonctionnel selon votre vocabulaire). Si vous utilisez le TreeNode dans votre couche métier, vous rendez votre couche métier dépendante de Windows Forms ! (Et donc vous ne pourrez pas l'embarquer dans des environment serveur ou mobile ou Windows Forms n'est pas supporté).

    Vous devez modéliser votre arbre à base de classe simple dans votre couche métier (MyNode,...etc) et au niveau IHM, vous devez créer des TreeNode qui pointe vers cet arbre modélisé.

    Pour le FullPath : Par défaut, comme pour les base de données, n'introduiser pas de redondances dans vos données. Vous devez calculer récursivement la valeur de cette propriété. Après une fois l'application en recette et/ou production, si des problèmes de performances sont signalées et que la méthode "FullPath" est appellée 2000 fois par secondes, vous pouvez introduire de le redondance en mettant sa valeur dans un attribut. Bien évidemmment, il faudra faire attention au niveau des mise à jour qui peuvent impacter le changement du FullPath.

    Est-ce que ces réponses ont apportées du combustible à vos lanternes ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Proposé comme réponse Ciprian Duduiala lundi 28 novembre 2011 08:18
    • Marqué comme réponse Mattmout mardi 29 novembre 2011 13:31
    dimanche 27 novembre 2011 11:33
    Modérateur

Toutes les réponses