Bonjour à tous,
Alors voilà: dans un projet, j'utilise des web services qui me renvoient des objets de classe A. Ces objets sont des objets passifs (sans méthodes ni evenements).
La definition de classe A m'est fournie dans le fichier Reference.cs créé au moments ou j'ajoute la reference au fichier wsdl du webservice.
Pour utiliser ces objets dans mon programme, je voulais deriver une classe B de classe A et ajouter des methodes. jusque là pas de soucis:
Lors de l'appel au Webservice, j'obtient en retour un objet de classe A sur lequel je voudrait pouvoir lancer MaMethode().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class ClasseB :ClasseA { public void MaMethode() { } }
J'obtient une erreur de compillation: Impossible de convertir implicitement le type ClasseA en ClasseB. Une convertion explicite existe (Un cast est-il manquant ?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ClasseB objetB = AppelWebService(); objetB.MaMethode();
Losque j'essaie de forcer le cast, j'ai une exception InvalidCastException à l'execution:
J'ai donc essayé de redefinir un operateur de cast implicit (ou explicit), et à la compilation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ClasseB objetB = (ClasseB)AppelWebService(); objetB.MaMethode();
Et j'ai a nouveau une erreur à la compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public static implicit operator ClasseB(ClasseA objectA) { // Opérations de convertion manuelles }
ClasseB.implicit operator ClasseB(ClasseA): convertion definie par l'utilisateur vers/de la classe de base.
Je ne sait plus comment m'y prendre, je fais donc appel à vos lumières.
Toutes les idées sont les bienvenues.
Merci d'avance.
n0n0
Partager