[C#] Cacher des méthodes d'une interface

Cacher des méthodes d'une interface [C#] - C#/.NET managed - Programmation

Marsh Posté le 22-12-2011 à 17:11:41    

Bonjour,
 
Je travaille dans un environnement de programmation par interface.
 
J'ai une interface (IInterface) qui est trop complète pour des parties de mon code.  
J'aimerai cacher certaines de ses méthodes, l'alléger (disons IInterfaceLight), tout en gardant une notion de hiérarchie/cast/conversion pour revenir de IInterfaceLight vers IInterface.
 
 

Code :
  1. class XXX
  2. Do(IInterface m) doit être remplacé par Do(IInterfaceLight m)
  3. ---
  4. IInterface
  5. - MethodA
  6. - MéthodB
  7. ---
  8. IInterfaceLight
  9. - MethodA
  10. ---
  11. class wrapperLight : IInterfaceLight
  12. {
  13. public wrapperLight (IInterface )
  14. }


 
J'ai deux solutions à ce problème :  
- faire une classe wrapper qui implémente IInterfaceLight et qui se branche directement sur les méthodes de IInterface
- Faire dériver IInterface de IInterfaceLight, ce qui me dérange car dans le fonctionnement, IInterfaceLight est toujours une IInterface  
 
De meilleurs idées ?
 
Merci
 
---  
Edit :
Si je divise IInterface en IInterfaceLight et IInterfaceNonLight, et que IInterface hérite de ces deux interfaces, ça pourrait marcher... des avis ?


Message édité par RedFishes le 22-12-2011 à 17:18:42
Reply

Marsh Posté le 22-12-2011 à 17:11:41   

Reply

Marsh Posté le 22-12-2011 à 18:00:14    

Merci pour ta réponse.
 
Mais je sens que je vais être obliger de m'orienter vers le wrapper, car avec la hierarchie d'interface, il y a toujours en fait la possibilité de down caster de InterfaceBase vers Interface...
 
J'aurai du le voir avant.

Reply

Marsh Posté le 23-12-2011 à 10:24:05    


La possibilité existe de caster explicitement de interfacebase vers interface, lorsque l'objet s'y prête, ce qui serait toujours le cas ici.  
 
Et je n'ai pas envi que le mec en fasse puisse le faire

Reply

Marsh Posté le 23-12-2011 à 11:08:10    

J'ai trouvé ce lien aussi, qui pose une autre approche à mon sujet :
http://stackoverflow.com/questions [...] -an-object

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed