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

ASP.NET Discussion :

Problème d'héritage et d'utilisation d'une interface


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Points : 83
    Points
    83
    Par défaut Problème d'héritage et d'utilisation d'une interface
    Bonjour tlm,

    J'ai actuellement repris un projet .NET
    Mais j'ai quelques soucis à comprendre ce qui a été fait dont l'utilisation d'une interface comme si celle-ci était une classe.
    Le projet est développé en C# et utilise une base de données DB2 comportant une table USERS, ROLES et USERSINROLES.
    Dans le source, il y a le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IPrincipal user = HttpContext.Current.User;
    if (user.IsInRole("Client")) { ... }
    J'ai donc pensé ajouter une table OPTIONS et USERSWITHOPTIONS.
    Puis créer une classe MyIPrincipal héritant de IPrincipal avec en plus la méthode IsWithOption(string option).
    Et ainsi modifier le code de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyIPrincipal user = HttpContext.Current.User;
    if (user.IsInRole("Client") && !(user.IsWithOption("ReadOnly"))) { ... }
    Le hic c'est qu'avec Visual Studio lorsque j'ai fait clique droit puis "atteindre définition", je me suis aperçu que IPrincipal était une interface.
    Et là, j'ai 2 soucis :
    _ IPrincipal est une interface et la méthode IsInRole n'est pas implémenté or "user.IsInRole('Client')" fonctionne correctement.
    _ Si je fais hériter MyIPrincipal de IPrincipal, je devrais ré-implémenté la méthode IsInRole et le Getter de l'attribut IIdentity alors que le code existe déjà.

    Est-ce que quelqu'un aurait une explication et si possible une solution ?

    Merci d'avance.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Peut-être que si user.IsInRole('Client') fonctionne bien, c'est que HttpContext.Current.User est une instance d'une classe qui hérite de IPrincipal et qui implémente IsInRole.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Points : 83
    Points
    83
    Par défaut
    Après des recherches infructueuses, j'ai tout simplement récupérer le type de l'objet User grâce à la méthode GetType.
    Le type de l'objet "HttpContext.Current.User" est RolePrincipal qui hérite effectivement de IPrincipal.
    Mais bon, mon idée ne peut s'appliquer car la classe RolePrincipal ne peut être héritée car celle-ci est scellée (sealed).
    Et je ne peux pas modifier le fichier .cs ni voir le source de la fonction IsInRole car le fichier est en lecture seule et ne contient que les déclarations des méthodes.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Points : 83
    Points
    83
    Par défaut
    En tout cas merci Graffito.

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

Discussions similaires

  1. Problème lors de la 1ère utilisation d'une macro VBA pour copie de feuille
    Par youp_youp_ dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/06/2014, 10h54
  2. Réponses: 3
    Dernier message: 17/07/2008, 12h25
  3. [Free Pascal] Erreur à l'utilisation d'une interface
    Par Neuromancien2 dans le forum Free Pascal
    Réponses: 1
    Dernier message: 10/12/2007, 20h31
  4. Probleme d'utilisation d'une interface COM
    Par zuzuu dans le forum Windows
    Réponses: 4
    Dernier message: 17/09/2007, 12h25
  5. Composants à utiliser pour une interface graphique Java
    Par nicolas.pied dans le forum Composants
    Réponses: 4
    Dernier message: 28/11/2005, 20h27

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