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 :

Encapsulation : Objet en lecture seule.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Par défaut Encapsulation : Objet en lecture seule.
    Bonjour à tous,

    Je cherche à savoir s'il existe une façon pour qu'un objet (ainsi que tout ce qu'il contient ou référence) soit accessible depuis une autre classe mais uniquement en lecture seule.

    Je m'explique :

    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
    18
    19
    20
     
     
     
     
            class Class2
            {
                    Classe1 instance_1 = new Classe1();
     
                    void test()
                    {//Objectif : Ici le code du type :
                            instance_1.Doit_etre_en_lecture.CaseSensitive = false; //ne doit pas fonctionner car on essaie de modifier la valeur d'une propriété ou d'un objet "descendant" de l'objet Doit_etre_en_lecture;
                            bool flag1 = instance_1.Doit_etre_en_lecture.CaseSensitive; // Doit fonctionner car dans ce cas on essaie pas d'écrire sur le dataset "Doit_etre_en_lecture" mais de lire.                
                    }
            }
     
    class Classe1
            {
                    public DataSet Doit_etre_en_lecture = new DataSet();
     
            }
    Bien sur je pourrais faire pour l'intégralité des propriétés de l'objet concerné des propriétés au sein de Classe1 accessible uniquement avec Get{} sans Set{}, ou utiliser la méthode Dataset.Copy mais je pense que vous aurez compris que ce n'est pas ce que je cherche.

    En un mot en termes d'encapsulation mon but est de pouvoir me dire "Le code de la Classe2 voit un objet donné de l'instance de la classe1" mais il n'est pas en mesure d'agir dessus, ni sur les tables, ni sur les noms des colonnes des tables, ni sur quoi que ce soit. Il permet de lire les objets du dataset, mais pas de les modifier."

    Merci à tous et bonne soirée,
    Vincent.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 435
    Par défaut
    Pour moi, la manière naturelle est de définir une Interface avec les propriétés avec des Get et de faire en sorte que Classe1 implémente cette interface et que Classe2 n'accède à Classe1 que via cette interface.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Par défaut
    Merci Bacelar, c'est une des solutions auxquelles j'avais pensé dans un premier temps, mais dans ce cas, on est obligé de faire un paramètre pour chacun des objets ou objets dépendants de l'objet qui doit rester en lecture seule.

    Est-ce que quelqu'un sait si cela existe ou si c'est faisable via un quelquonque moyen en c# ?

    Bonne journée.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 435
    Par défaut
    Il est très facile de concevoir une interface de telle manière que les objets retournés par les propriétés ou les méthodes est aussi une sémantique "const".
    Il suffit de spécifier des interfaces bien choisis comme type de propriété et type de retour des méthodes.
    Le Framework .NET dispose déjà de bon nombre de ces interfaces comme les collections en mode readOnly.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/05/2010, 13h36
  2. GetObject => erreur "objet en lecture seule"
    Par Duddy dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/07/2008, 15h10
  3. [Access 2003]- erreur 3027 : base ou objet en lecture seule
    Par metallica_fr dans le forum Access
    Réponses: 5
    Dernier message: 15/12/2006, 17h36
  4. Mise à jour impossible, objet en lecture seule
    Par Pitou5464 dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2006, 18h26
  5. Base de Données ou objet en lecture seule?
    Par ben_skywalker dans le forum Access
    Réponses: 6
    Dernier message: 01/06/2006, 08h47

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