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 :J'ai donc pensé ajouter une table OPTIONS et USERSWITHOPTIONS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 IPrincipal user = HttpContext.Current.User; if (user.IsInRole("Client")) { ... }
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 :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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MyIPrincipal user = HttpContext.Current.User; if (user.IsInRole("Client") && !(user.IsWithOption("ReadOnly"))) { ... }
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.
Partager