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 :

Authentification Portée Globale Objet


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mohamed301084
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2010
    Messages : 104
    Par défaut Authentification Portée Globale Objet
    Bonjour,

    J'ai une application VB.NET composée de plusieurs formulaires.

    L'application contient aussi une classe Authentification qui gère le niveau d'accès de l'utilisateur ( niveau 1 , niveau 2 , niveau 3).

    Aujourd'hui à chaque form_load de chaque formulaire j' instancie un objet de la classe Authentification pour connaitre le niveau d'accès de l'utilisateur.

    J'aimerais faire cela uniquement 1 seule fois et ensuite "partager" mon objet instancié à toutes les form de l'application.


    Quelle pourrait être la solution ?

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Tu peux créer ton objet dans ta fenêtre principale (de démarrage) en Public ou Friend.

    Pour y accéder, tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MaFenetreMere.MonObjet.MonDroitDacces = 12 Then
    Je ne sais pas si c'est la meilleur solution, mais je n'en connais pas d'autres...

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    soit rendre une instance public
    - variable ou propriété publique dans un module
    - variable ou propriété publique shared dans une classe

    soit faire une classe singleton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class machin
     
      private sub new
      end sub
     
      private shared _instance as machin
      public shared function GetInstance as machin
         if _instance is nothing then _instance = new machin
         return _instance
      end function
     
    end class
    avec le singleton, il est même impossible d'avoir deux instances, ce qui sécurise le code
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    soit rendre une instance public
    - variable ou propriété publique dans un module
    - variable ou propriété publique shared dans une classe

    soit faire une classe singleton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class machin
     
      private sub new
      end sub
     
      private shared _instance as machin
      public function GetInstance as machin
         if _instance is nothing then _instance = new machin
         return _instance
      end function
     
    end class
    avec le singleton, il est même impossible d'avoir deux instances, ce qui sécurise le code
    Oui mais même avec cette solution... L'objet instancié avec cette classe doit bien être déclarer quelque part, non ? Genre dans la Fenêtre de démarrage ?

    Ou est ce que si elle est déclaré dans un module, l'objet persiste de manière permanente ?

  5. #5
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    J'obterais pour le module en déclaration "Public".

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Oui mais même avec cette solution... L'objet instancié avec cette classe doit bien être déclarer quelque part, non ? Genre dans la Fenêtre de démarrage ?

    Ou est ce que si elle est déclaré dans un module, l'objet persiste de manière permanente ?

    il est déclaré dans la classe lui meme, étant shared il reste en vie jusqu'à la fin de l'appli, et est accessible de partout via machin.GetInstance

    (d'ailleurs j'ai oublié le shared sur la fonction, edité)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Ah bah merci du renseignement !

  8. #8
    Membre confirmé Avatar de mohamed301084
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2010
    Messages : 104
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Tu peux créer ton objet dans ta fenêtre principale (de démarrage) en Public ou Friend.

    Pour y accéder, tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MaFenetreMere.MonObjet.MonDroitDacces = 12 Then
    Je ne sais pas si c'est la meilleur solution, mais je n'en connais pas d'autres...

    Merci pour la méthode. Cela répond tres bien à ma demande.
    Je laisse le singleton pour le moment mais merci Good job!

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

Discussions similaires

  1. [XL-2003] Cellule nommée relative à portée globale.
    Par JOHN14 dans le forum Excel
    Réponses: 1
    Dernier message: 28/01/2010, 19h58
  2. Portée globale en AS3
    Par BBric dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 15/04/2008, 09h56
  3. pb: affecter durablement l'id d'un objet (portée globale et non locale)
    Par pit9.76 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 30/06/2006, 11h19
  4. [FLASH 8] Question sur la portée des objets.
    Par i_shinji dans le forum Flash
    Réponses: 1
    Dernier message: 02/11/2005, 17h18
  5. Réponses: 5
    Dernier message: 25/05/2005, 22h29

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