IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Regrouper un grands nombres d'objets différents dans une classe


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Regrouper un grands nombres d'objets différents dans une classe
    Bonjour à tous,

    Dans une interface graphique, je travail avec un grand nombre d'objets et de variables. Chacun d'eux peuvent être utilisés à différents endroit de l'interface (exemple : affichage sur la page principal et modification dans une page de gestion des paramètres ...).

    J'ai besoin de sauvegarder et pouvoir charger leur état à n'importe quel moment.

    J'aurais voulu savoir s'il existait une solution simple pour regrouper un grand nombre d'objets au même endroit, et pouvoir les utiliser facilement, s'abonner à leurs événements ...

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    Salut,
    je ne sais pas quelle version de VS tu utilises (moi je suis resté à 2005 donc Linq je connais po )

    au plus basique, si tu connais d'avance tous les types d'objets :
    perso j'aurais créé une classe que je refilerais entre mes différentes classes comme paramètre.
    cette classe contiendrait une collection de chacun de ces types d'objet, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Class MonGaragedObjets
    {
    public List<Avion> AvionCollection;
    public List<Bateau> BateauCollection;
    public List<Bagnole> BagnoleCollection;
     
    public MonGaragedObjets()
    {
    AvionCollection = new List<Avion>();
    BateauCollection = new List<Bateau>();
    BagnoleCollection = new List<Bagnole>();
    }
     
    //mes différentes fonctions pour sauver/charger mes données
    //m'abonner aux events etc...
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Je suis sous VS 2010 Express, et je ne connais pas non plus Linq

    J'avais aussi pensé à une classe dans ce genre mais en utilisant des Dictionary au lieu des List. Je trouve ça un peu "lourd" comme solution

    EDIT : Je n'avais pas pensé à la sérialisation non plus ...

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 12
    Points : 13
    Points
    13
    Par défaut Le but est de rassembler ou de mettre en cache?
    Bonjour,

    Je suis sur VS 2008 sp 1 et prochainement sur 2010 rc (et je connais bien Linq ).

    En ce qui concerne ton probleme, tu pourais créer une DLL (genre settingsManager) qui prend en charge la sauvegarde et retauration des valeurs des variables. Toutefois, tout dépend de ton besoin....

    si tu veux seulement les rassembler (en mémoire), tu as le choix entre Dictionnaire, liste ou meme IEnumerable si les types sont différents entre les paramètres. Si tu a bcp d'autre variables tu peux aussi miser sur les objets ADO (datatable, dataset,...). L'interet avec l'ADO c'est qu'avec une seule instruction tu peux créer une sauvegarde en xml des données en mémoire (utile pour des backup plans lol).

    Enfin voila ... dis moi et je te dirais....

    Cordialement,

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    En ce qui concerne ton probleme, tu pourais créer une DLL (genre settingsManager) qui prend en charge la sauvegarde et retauration des valeurs des variables. Toutefois, tout dépend de ton besoin....
    C'est effectivement un truc dans le genre qu'il me faut !

    Chachnaq, ça ne te dérangerais pas de me filer un p'tit coup de main pour la mise en place de l'architecture ?

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Je te suggères d'utiliser la POO : c'est-à_dire de faire hériter tous les objets "Avion", "Bateau", "Bagnole" d'un objet de base "Vehicule".
    "Véhicule" contiendra des méthodes Virtual qui seront redéfinies (Override) dans chaque classes basée sur "Vehicule" pour les adapter à chaque objet hérité.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Merci Graffito, j'y avais pensé aussi. Le problème est que j'utilise une API dans laquelle sont déclarés les objets avec lesquels réagit mon IHM.

    Est-ce possible créer une classe un peu dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class GuiObject {
     
             Type type;
             Object value;
    }
    Elle pourrait contenir n'importe quoi, mais on précisant le type de ce n'importe quoi, on sécurise le moment où on veut récupérer l'objet....

  8. #8
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Points : 444
    Points
    444
    Par défaut
    Dans ce cas, tu peux avoir une classe générique GuidObject. Ainsi la propriété Object serait typé dans ta classe.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Euh... J'ai pas trop compris

  10. #10
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Est-ce possible créer une classe un peu dans ce genre :
    Code : public class GuiObject { Type type; Object value; }
    Cela présente peu d'intéret, étant donné que tu peux directement obtenir le type à partir de l'objet (fonction typeof de mémoire).

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 12
    Points : 13
    Points
    13
    Par défaut Evidement que oui
    Citation:
    En ce qui concerne ton probleme, tu pourais créer une DLL (genre settingsManager) qui prend en charge la sauvegarde et retauration des valeurs des variables. Toutefois, tout dépend de ton besoin....
    C'est effectivement un truc dans le genre qu'il me faut !

    Chachnaq, ça ne te dérangerais pas de me filer un p'tit coup de main pour la mise en place de l'architecture ?
    Bonjour,

    Je suis la. Au fait, pour la couche d'accès et l'implémentation je te propose:
    1. Implémenter un singleton -SettingManager- (voir les design Patterns) qui s'occupe de gérer les paramètres dans ton app (éviter d'avoir des instance du gestionnaire de paramètres).
    2. Implémenter une couche d'accès aux données (paramètres sauvegardés). La cela dépend du choix du support de sauvegarde. A mon sens, tu peux utiliser:
    a. La base de registre Windows. Inconvenient: réduit la portabilité. Sur vista et seven le UAC te posera des problèmes. Il faut que ton app ait les prévilèges administrateur pour acceder a la base de registre.
    b. Utiliser un fichier XML. Il faut penser aussi à ne pas le mettre dans le dossier programmes de seven sinon tu retombes sur le probleme de l'UAC. Penser peut etre aussi à crypter le fichier et à lui créer aussi un XSD (voir sur google ).

    3. Pour te faciliter les choses, tu peux utiliser un dictionnaire dans ton settingsManager. En implémentant un indexer pour ta classe (trois fois rien), tu pourras y accéder avec des indexes (settingsManager[i], ou i peut etre la key du dictionnaire par exemple).

    4. Pour le DAL (Data Access Layer) que tu vas implémenter,je te conseille d'utiliser du Linq To Xml. cela va te faciliter grandement la tâche et te permettre aussi de requêter tes données.

    voila voici les conseils que je peux te donner sur l'architecture. Oups j'ai failli oublier. Pour le dictionnaire tu peux mettre la value comme object ou encore mieux, implémente une classe qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public class TonParametre
    {
         private object _valeur;
         public object Valeur
         {
            get....
            set...
          }
         private string _leTypeDuParametre;
         public string LeTypeDuParametre
         {
            get.....
            set...
          }
    }
    de cette façon tu peux récupérer n'importe quel type de paramètre dans ton settingManager. il faut utiliser 'Reflection' (voir aussi google).


    voila j'espere que j'ai été clair.

    a ta disposition.

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2009, 16h20
  2. objets différents dans une colonne de datagrid
    Par Pascale38 dans le forum Flex
    Réponses: 25
    Dernier message: 22/01/2009, 18h05
  3. Réponses: 28
    Dernier message: 11/10/2006, 22h36
  4. Nombre de valeurs différentes dans une colonne
    Par KrusK dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/08/2005, 14h18
  5. URGENT - Nombre d'enregistrements différents dans une table
    Par Jeankiki dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/08/2004, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo