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

VB.NET Discussion :

Cacher tous les variables Private qui commencent par _ (Underscore) au sein d'une classe/structure


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Cacher tous les variables Private qui commencent par _ (Underscore) au sein d'une classe/structure
    Bonjour,

    Similairement à cette discussion Cacher les sous-type de données dans une structure, je souhaiterai pouvoir cacher automatiquement toutes les variables Private commancant par _. Par cacher, j'entends que les variables ne doivent pas apparaitre dans :
    - l'explorateur d'object
    - Fenêtre de variables locales
    - Fenêtres Espion
    - en passant la souris sur une variable.

    En bref, totalement cacher toutes les variables contenu dans une structure ou une classe (principalement) commançant 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Class C1
        Private _P1 As Long
        Private _P2 As Long
        Private _P3 As Long
        Property P1 As Long
            Get
                Return _P1
            End Get
            Set(value As Long)
                _P1 = value
            End Set
        End Property
        Property P2 As Long
            Get
                Return _P2
            End Get
            Set(value As Long)
                _P2 = value
            End Set
        End Property
        Property P3 As Long
            Get
                Return _P3
            End Get
            Set(value As Long)
                _P3 = value
            End Set
        End Property
    End Class
    Ici, _P1, _P2 et _P3 devraient tous être caché en définissant un attribut à la classe C1. On peut le faire, mais seulement variables par variables, et l'attribut n'est pas définit sur la classe mais directement sur la variables concerné, et lorsqu'il y a 10 variables Private ...

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par Nouveau2 Voir le message
    Bonjour,

    Similairement à cette discussion Cacher les sous-type de données dans une structure, je souhaiterai pouvoir cacher automatiquement toutes les variables Private commancant par _. Par cacher, j'entends que les variables ne doivent pas apparaitre dans :
    - l'explorateur d'object
    - Fenêtre de variables locales
    - Fenêtres Espion
    - en passant la souris sur une variable.

    En bref, totalement cacher toutes les variables contenu dans une structure ou une classe (principalement) commançant 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Class C1
        Private _P1 As Long
        Private _P2 As Long
        Private _P3 As Long
        Property P1 As Long
            Get
                Return _P1
            End Get
            Set(value As Long)
                _P1 = value
            End Set
        End Property
        Property P2 As Long
            Get
                Return _P2
            End Get
            Set(value As Long)
                _P2 = value
            End Set
        End Property
        Property P3 As Long
            Get
                Return _P3
            End Get
            Set(value As Long)
                _P3 = value
            End Set
        End Property
    End Class
    Ici, _P1, _P2 et _P3 devraient tous être caché en définissant un attribut à la classe C1. On peut le faire, mais seulement variables par variables, et l'attribut n'est pas définit sur la classe mais directement sur la variables concerné, et lorsqu'il y a 10 variables Private ...
    Sauf horreur de ma part, quand une variable, ou une procédure, est déclarée comme Private, elle est inaccessible de l'extérieur de la classe, dans laquelle elle est instanciée. Dans ton cas, tes variables Private sont accessibles à toutes les propriétés/procédures de ta classe, mais elles sont inaccessibles de l'extérieur de ta classe. Mais, de là à dire que tu vas les rendre invisibles de tout observateur, j'en doute...

    Le seul contact "avec l'extérieur" de tes variables Private est par l'entremise des propriétés. Si tu veux que ton "utilisateur", qu'il soit humain ou numérique, ne soit pas autorisé à tripoter ta propriété, tu peux la mettre "ReadOnly". Dans de cas; seule une procédure ou une instruction contenue dans la même classe, peut modifier la propriété.

    Mais, comme je ne suis pas (encore) passé sur ton autre question, je dois dire que je ne comprends pas vraiment ce que tu as en tête.

  3. #3
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    A priori il faudrait marquer tes champs avec l'attribut DebuggerBrowsable en lui donnant pour argument Never

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je ne vais pas te montrer comment faire, mais on peut modifier une variable Private depuis l'exterieur, mais là n'est pas le but.
    Ma question ne concerne que et seulement la visiblité, pas l'accessibilité.

    Pour comprendre, essaie ceci en mode Debug, puis en mode Release:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #If Not DEBUG Then
    <System.Diagnostics.DebuggerStepThrough>
    <System.Diagnostics.DebuggerDisplay("{_P1}")>
    Class C1
     
        <System.ComponentModel.Browsable(False)>
        <System.Diagnostics.DebuggerBrowsable(System.Diagnostics.DebuggerBrowsableState.Never)>
        <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>
        Private _P1 As Long
    #Else
    Class C1
     
        Private _P1 As Long
    #End If
     
        Property P1 As Long
            Get
                Return _P1
            End Get
            Set(value As Long)
                _P1 = value
            End Set
        End Property
     
    End Class
     
    Public Class CMain
        Shared Sub Main()
            Dim c1 As New C1 With {.P1 = 1}
        End Sub
    End Class
    Observe les fenêtres et explorateur d'object pour chaques modes.
    Dernière modification par Invité ; 19/07/2014 à 22h04.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    A priori il faudrait marquer tes champs avec l'attribut DebuggerBrowsable en lui donnant pour argument Never
    Oui, voilà, mais je souhaiterai marquer toutes les variables qui commencent par _ de manière automatique.

    Dans l'exemple que j'ai fourni, c'est le bordel pour 1 seule variable. Pour 5, 10 variables ...
    De plus, j'aimerai faire des type de données avec des structures, et j'aimerai si possibles que la structure apparaisse comme si c'était un type de donnée comme le type System.IntPtr.


    Voyez-vous ce que je veux dire ?

    Par exemple, le type System.IntPtr qui est une structure ne laisse pas apparaitre ces membres lorsqu'on l'observe dans une fenêtre, et c'est bien comme ça. System.IntPtr apparait comme un alias de type de données un peu comme le type LongPtr du VBA 7 sous Excel plutôt que comme une structure normal. C'est pour simuler un Integer en 32 bit et un Long en 64 bit comme en VBA.

    Merci pour ces réponses tout de même.
    Dernière modification par Invité ; 19/07/2014 à 22h34.

Discussions similaires

  1. [XL-2000] Comment faire pour distinguer les cellules qui commencent par
    Par Avinetor dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/06/2009, 14h36
  2. Dénombrer les cellules qui commencent par X
    Par NEC14 dans le forum Excel
    Réponses: 7
    Dernier message: 30/01/2009, 12h48
  3. Afficher seulement les entrées qui commencent par X
    Par anarchoi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/05/2007, 06h31
  4. Réponses: 5
    Dernier message: 19/01/2007, 22h53
  5. Parcourir tout les Id qui commence par "dz_"
    Par FMaz dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 24/03/2006, 21h46

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