Hashtable de collections, pb de conception ? - C#/.NET managed - Programmation
Marsh Posté le 10-03-2008 à 14:58:44
ReplyMarsh Posté le 10-03-2008 à 15:00:14
Triplet en est une justement
private struct Triplet<K,V> { |
Marsh Posté le 10-03-2008 à 15:06:32
ah merde
sinon tu as le mot clé "is" qui se rapproche un peu de l'usage du dynamic_cast : http://msdn2.microsoft.com/en-us/l [...] S.80).aspx
Marsh Posté le 10-03-2008 à 15:41:39
Harkonnen a écrit : ah merde |
mmm donc ca ferait un truc genre :
Code :
|
Du coup j'ai toutes mes comboboxes sur le même gestionnaire d'events, mais je dois encore augmenter le code à chaque nouveau type de collection générique que me renvoie le sdk.
Bon c'est déjà pas mal... mais jpeux pas m'empêcher de trouver ce bout de code inélégant
edit :
en fait si mon écouteur d'évènement peut être un
Code :
|
au lieu d'un
Code :
|
alors j'ai gagné
Marsh Posté le 10-03-2008 à 16:29:44
Bon ca marche avec du :
Code :
|
et du :
Code :
|
Mais très bonne idée le Factory, j'y avais pas du tout pensé... je vais voir si ca peut donner un truc plus propre
Marsh Posté le 10-03-2008 à 14:51:28
Bonjour à tous ,
j'ai un petit soucis de conception, ma solution ne me semble pas très "fine" .
Je bosse avec le sdk d'un appareil photo, j'ai wrappé les appels aux méthodes du
sdk dans différentes classes.
J'ai donc une classe "Camera", avec différentes propriétés et méthodes retournant les réglages
possibles, genre :
sous forme de
Pour camera.GetISOSpeeds() (par exemple) les couples (clef, valeur) sont du genre ("ISO 400",
0x48), avec valeur = la valeur à passer à Camera.ISO (propriété) pour régler
l'appareil en ISO 400.
Et j'ai quelques combobox dans une IHM, remplies automatiquement avec les clefs
de ces collections, pour avoir par exemple une liste contenant "ISO 80", "ISO
200", etc etc.
Quasiment toutes les fonctions de l'appareil sont "mappables" sur
des combobox, car c'est quasiment toujours un réglage à sélectionner parmi une liste de
possibilités fournie par l'appareil.
Il s'avère que toutes mes combobox ont le même comportement, quand je click sur
"ISO 400" je veux :
Pour éviter d'implémenter autant de méthodes écoutant les évènements qu'il y a
de comboboxes, j'aurai bien tout cablé sur la même méthode, qui aurait utilisé
l'émetteur de l'évènement (donc la combobox) comme clef donnant accès, dans une
hashtable, à une struct "Triplet" contenant :
Problème :
si je stock mon "Triplet", il me faut stocker en fait un
car l'une des données membre de la struct est un
car à l'origine, GetISOSpeeds() me retourne un
Donc ma collection de Triplet<K,V> (avec pleins de K et V différents) est une
Hashtable (key=Combobox, value=Object)
mais le drame c'est que je ne peux pas sortir un Triplet directement,
ne connaissant pas les types K et V. Un coup c'est :
une autre fois ça sera
ou
Je pense pouvoir m'en sortir avec du typeof(instance) ou autre, mais bon
J'aurai bien aimé au moins un truc à la C++ genre :
Si quelqu'un a une idée sur comment stocker cette association "combobox/collection
générique/property à appeler", je suis preneur
Message édité par Xavier_OM le 11-03-2008 à 10:10:54
---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.