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.