Forcer la compilation

Résolu
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 - 6 oct. 2005 à 10:59
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 8 oct. 2005 à 20:51
Bonjour



Est- il possible de forcer la compilation a accepter le code sachant que
lorsqu'il s'exécutera il sera bon. Je m'explique via un exemple



je possède 3 fenêtres wTest1 et wTest2 avec chacune le membre
"iwTips" et une fenêtre wTips



le constructor de la fenetre wTips est comme suit:



public wTips(System.Windows.Forms.Form
awParent)

{


iwParent = awParent;

awParent.iwTips =
this; <==== c'est cette ligne que je voudrais forcer a la
compilation

InitializeComponent();

}



sachant que la fenêtre wTips ne sera exécuté que par wTest1 ou wTest2



Remarque: dans ce cas présent il serait possible de faire ((wTest1)
awParent).iwTips ou idem avec wTest2 mais ce n'est pas ce que je recherche. C'est
réellement de forcer la compilation.











<!--[if !supportLineBreakNewLine]-->

<!--[endif]-->

8 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 oct. 2005 à 18:02
Si tu veux vraiment échapper au cast et à l'interface je te propose ça :

public wTips(System.Windows.Forms.Form awParent)
{
iwParent = awParent;


// awParent.iwTips = this;
PropertyInfo prop = awParent.GetType().GetProperty("iwTips");
if ( prop != null )
{
// si la propriété existe, on affecte
prop.SetValue(awParent, this, null);
}


InitializeComponent();
}
...

Mais je pense que tu vas preferer la définition d'une interface comme le propose seb, c'est beaucoup plus logique.

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
6 oct. 2005 à 11:10
bah nan... ce n'est pas possible... puisque la classe Form ne possède pas de propriété iwTips !

Sébastien FERRAND
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
6 oct. 2005 à 11:16
Je comprend tas reponse qui est logique a premiere vue. Mais est ce que
tu comprend que lors de l'execution l'appli ne va pas planter car
wTest1 et wTest2 possede la propriete iwTips.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
6 oct. 2005 à 11:23
oui... mais je crois que tu n'as pas bien compris les principes de la POO...

l'objet que tu manipules là n'est pas un wTest1 ou un wTest2... mais un Form... et donc Form n'a pas de propriété iwTips.

donc, la solution c'est ca :

public wTips(System.Windows.Forms.Form awParent)
{
iwParent = awParent;
if (awParent is wTest1) {
((wTest1)awParent).iwTips = this;
}
if (awParent is wTest2) {
((wTest2)awParent).iwTips = this;
}
InitializeComponent();
}

Mais le plus propre sera d'avoir une interface commune avec toutes les propriétés, méthodes et autres évènements que tu veux utiliser... et ensuite tu les impléments dans tes formulaires.

Sébastien FERRAND
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
8 oct. 2005 à 20:11
Coq tu as tres bien compris le principe de ce que je cherche mais le problem c'est que tas methode ne fonctionne pas. En effet, dans ton exemple prop reste toujours null meme lorsque awParent provient de wTest1???
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 oct. 2005 à 20:16
La propriété (ou parle bien d'une propriété ?) iwTips est définie dans les classes wTest1 et wTest2 ou dans une classe dont elles héritent ?
Quel est leur niveau d'accessibilité ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
8 oct. 2005 à 20:27
public wTest1.wTips iwTips


Membre de Test1.wTest1
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 oct. 2005 à 20:51
Donc quand tu passes une instance de wTest1 ça devrait réussir à localiser la propriété iwTips.
Je ne vois pas pourquoi ça ne passe pas.

Mais regarde plutot du coté de la définition d'une interface, ça correspond très bien a ce que tu veux faire, et ça sera plus simple et plus performant.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous