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 :

Est-ce possible d'empêcher la modification d'une liste ?


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 69
    Points : 63
    Points
    63
    Par défaut Est-ce possible d'empêcher la modification d'une liste ?
    Bonjour,

    Je travaille sur une solution C# où il y a plusieurs couches.

    Une de mes classes (dans une couche basse) a une liste privée, et j'aimerais donner cette liste à une classe (dans une couche haute).

    Mais je ne veux pas que la classe dans la couche haute puisse modifier cette liste.

    Voici un exemple de code pour la couche haute :

    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 Haute
    {
      public static void Main()
      {
        List<Element> maListe = Basse.GetList();
     
        DataGrid dg = new DataGrid();
     
        dg.DataSource = maListe;
     
        ...
     
        maListe.Add(Element); // <-- NON ! Je ne veux pas autoriser ça !
      }
    }
    Voici un exemple de code la couche basse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public static class Basse
    {
      private static List<Element> uneListe = new List<Element>();
     
      public static List<Element> GetList()
      {
        return uneListe;
      }
     
      ...
    }
    L'intérêt de partager une liste comme ceci est que lorsque la couche basse modifie la liste, les modifications sont automatiquement répercutées sur la couche haute.

    Mais je ne veux pas que la couche haute puisse modifier cette liste qui est private à la classe de la couche basse.

    Est-ce possible ?

    piloupy

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Bonjour,

    Donne une ReadOnlyCollection, plutôt qu'une liste et le problème est réglè.

  3. #3
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Et ça peut se faire en écrivant maList.AsReadOnly().

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 69
    Points : 63
    Points
    63
    Par défaut
    Ca marche !!! Merci beaucoup !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static class Basse
    {
      private static List<Element> uneListe = new List<Element>();
     
      public static IList<Element> GetList()
      {
        return uneListe.AsReadOnly();
      }
     
      ...
    }
    La liste n'est qu'en un seul exemplaire en mémoire, donc les modifs en couche basse sont répercutées dans les couches hautes.

    C'est impeccable ! Merciii !

    piloupy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD15] est il possible de récupérer l'image d'une liste image
    Par fr832 dans le forum WinDev
    Réponses: 6
    Dernier message: 27/11/2011, 17h33
  2. est-il possible de faire un where avec une liste en paramètre
    Par amednagh dans le forum Développement
    Réponses: 7
    Dernier message: 19/10/2011, 18h45
  3. Réponses: 1
    Dernier message: 23/01/2008, 17h42
  4. [SQL] Est-il possible d'afficher le résultat d'une requête dans un cadre
    Par dessinateurttuyen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/07/2006, 17h52
  5. Est-il possible de détecter la modification d'un fichier ?
    Par Kokito dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 25/06/2004, 10h42

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