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 :

Exposition de variables


Sujet :

VB.NET

  1. #1
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut Exposition de variables
    Salut à tous,

    Je suis en train de me prendre la tête sur un problème en VB2005

    J'ai créé une classe, dans cette classe, j'ai créé un type structure.

    J'ai ensuite une propriété de type ma structure.

    Vu de l'extérieur de la classe, je ne souhaite pas exposer mon type structure. je ne souhaite qu'il soit accessible.
    Il faut que chaque membre de la structure ne soit accessible que par la propriété.

    J'ai tenté de mettre mon type structure en Private, ma propriété en Public mais j'ai un message d'erreur que je n'arrive pas à résoudre.

    'MaPropriete' ne peut pas exposer le type 'MaStructure' dans namespace 'ProjetUtilisantLaClasse' à travers class 'MaClasse'.
    Un peu d'aide serait la bienvenue !

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 201
    Par défaut
    si A (publique) est du type B
    B doit être publique aussi c'est logique !
    enfin ca dépend aussi de la classe, si la classe n'est pas publique B n'est alors pas exposé donc A peut être publique mais de toute facon se limite à la définition de la classe


    après par contre il est possible de restreindre l'utilisation de ta structure à l'extérieur d'autres manières
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Ok, donc le type doit être public, je ferais avec.

    D'ailleurs le coup de la propriété n'est pas une bonne idée non plus. Je ne peux modifier la valeur des membres de la structure à travers la propriété.

    Je suis obligé de déclarer ma variable comme une variable publique à la place d'une propriété.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 201
    Par défaut
    je crois que tu devrais revoir les bases de .NET
    (par ici par exemple http://plasserre.developpez.com/vsommair.htm)

    que ca soit une variable publique ou une propriété l'accès est à peu près le meme (une propriété est une variable qui peut avoir du code)

    de toute façon, même avec une propriété readonly, les membres de la structure seraient modifiables ! (si la structure les défini comme modifiables)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Je suis d'accord.

    J'ai l'habitude d'utiliser les propriétés mais c'est la première fois que j'essaye d'y passer une structure.

    Voila le message que j'obtient lorsque je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImpBons.Entete.DO_Domaine = 1
    Cette expression est une valeur et ne peut donc pas être la cible d'une assignation.

    ImpBons étant l'instance de ma classe, Entete la propriété de type structure et DO_Domaine le membre de la structure

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 201
    Par défaut
    DO_Domaine n'est pas readonly ?

    mets nous le code de la structure et de la propriété peut etre ...


    et pourquoi une structure plutot qu'une classe ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    pourquoi une structure ? histoire de me prendre la tête sans doute.

    En fait je fais une classe qui doit faire des insertion dans une base de données sur 2 tables (bons de commandes, donc entête et lignes)

    plutôt que de me trainer une quantité phénoménale de variables, j'ai eu l'idée de créer une structure pour les données à insérer dans chacune des tables.

    Donc la déclaration de la classe :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Public Class ImportBC
     
      Public Structure EnteteDocument
        'Obligatoire
        Dim DO_Domaine As Integer
        .....
      End Structure
     
      Public Structure LigneDocument
        'Obligatoire
        Dim DL_No As Integer
        Dim DO_Domaine As Integer
        ....
      End Structure
     
      Private _Entete As EnteteDocument
      Private _Ligne As LigneDocument
     
      Public Property Entete() As EnteteDocument
        Get
          Return _Entete
        End Get
        Set(ByVal value As EnteteDocument)
          _Entete = value
        End Set
      End Property
     
      Public Property Ligne() As LigneDocument
        Get
          Return _Ligne
        End Get
        Set(ByVal value As LigneDocument)
          _Ligne = value
        End Set
      End Property
     
      Public Function InsertionEntete() As Integer
      .....
     
      Public Function InsertionLigne() As Integer
      .....
     
    End Class
    et l'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim ImpBons As New ImportBC
     
        ImpBons.Entete.DO_Domaine = 1
    ....
    Le but étant de n'exposer que les 2 propriétés et les fonctions publiques

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 48
    Par défaut
    Y a un truc bizarre, c'est le fait que tu ai défini l'accés à une propriété mais pas la propriété de cette propriété. Je sais pas trop l'expliquer, mais y a un truc qui me parait louche.
    Est ce que ce code te conviendrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim fd As ImportBC
    'creation de la propriété
    Dim test As New EnteteDocument
    test.DO_Domaine = 1
    'affectation de la propriété à l'objet
    fd.Entete = test
    Faire ainsi me parait plus logique.

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 201
    Par défaut
    vu que c'est une structure son code doit être bon, une structure n'ayant pas besoin de new et étant accessible directement


    à la place des dim essaye de mettre public et regarde si ca te met encore le message d'erreur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Bon par manque de temps, j'ai laisser tomber les propriétés.

    Je passe directement par des variables publiques.

    Mes types sont visibles, mais variables aussi, c'est pas grave.

    J'optimiserais dans la version 2, si un jour il doit y en avoir une



    C'est toujours pareil, 2 jour de code de vendu, alors qu'il en faut 4 pour faire l'appli.
    Et dans ces quatre jours de dev, il faut arriver à caser 5 jours à traiter les urgences, la hotline, .....

    ah si j'étais rentier sur une ile paradisiaque .....

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/07/2002, 13h32
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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