Le 28/11/2008, Gloops a supposé :Ah, toi aussi, tu penses aux délégués.
Mais surcharger la classe juste pour le plaisir d'écrire des délégués ...
Ouais, j'y ai pensé.
Sinon en C# 3.0 on ne peut pas ajouter des méthodes dans les classes du
framework ? Je ne sais plus comment ça s'appelle mais p'tre ajouter
AddWithEvent(), RemoveWithEvent(), etc... non ?
Le 28/11/2008, Gloops a supposé :
Ah, toi aussi, tu penses aux délégués.
Mais surcharger la classe juste pour le plaisir d'écrire des délégués ...
Ouais, j'y ai pensé.
Sinon en C# 3.0 on ne peut pas ajouter des méthodes dans les classes du
framework ? Je ne sais plus comment ça s'appelle mais p'tre ajouter
AddWithEvent(), RemoveWithEvent(), etc... non ?
Le 28/11/2008, Gloops a supposé :Ah, toi aussi, tu penses aux délégués.
Mais surcharger la classe juste pour le plaisir d'écrire des délégués ...
Ouais, j'y ai pensé.
Sinon en C# 3.0 on ne peut pas ajouter des méthodes dans les classes du
framework ? Je ne sais plus comment ça s'appelle mais p'tre ajouter
AddWithEvent(), RemoveWithEvent(), etc... non ?
Plus simple parce qu'une méthode d'extension n'est qu'un sucre
syntaxique pour une fonction statique, pour laquelle les events que tu
créerais devraient à leur tour être statiques pour pouvoir y êt re
appelés (avec donc pour conséquence que tu ne pourrais avoir qu'un
unique gestionnaire d'évènement appelé pour l'ensemble de tes lis tes).
Plus simple parce qu'une méthode d'extension n'est qu'un sucre
syntaxique pour une fonction statique, pour laquelle les events que tu
créerais devraient à leur tour être statiques pour pouvoir y êt re
appelés (avec donc pour conséquence que tu ne pourrais avoir qu'un
unique gestionnaire d'évènement appelé pour l'ensemble de tes lis tes).
Plus simple parce qu'une méthode d'extension n'est qu'un sucre
syntaxique pour une fonction statique, pour laquelle les events que tu
créerais devraient à leur tour être statiques pour pouvoir y êt re
appelés (avec donc pour conséquence que tu ne pourrais avoir qu'un
unique gestionnaire d'évènement appelé pour l'ensemble de tes lis tes).
BindingList<string> ma_liste = new bindingList<string>();
ma_liste.ListChanged += MonEventHandler;
ma_listbox.DataSource = ma_liste;
....
BindingList<string> ma_liste = new bindingList<string>();
ma_liste.ListChanged += MonEventHandler;
ma_listbox.DataSource = ma_liste;
....
BindingList<string> ma_liste = new bindingList<string>();
ma_liste.ListChanged += MonEventHandler;
ma_listbox.DataSource = ma_liste;
....
Bonjour tout le monde,
Ok pour l'expression sucre syntaxique :) ,...
Mais par contre pas trop pour le côté static : Pourquoi?
1) oui on déclare une méthode statique dans une classe statique hor s de
la calsse à étandre.
2) le premier argmuent est une instance de la classe étandue :) et ou i
UNE instance.
-> donc comme dit Christophe, il s'agit d'un sucre, mais d'un sucre en
morceaux, on a du solide derrière (une vrai instance) donc on peut fa ire
la même chose qu'avec une méthode, hors mis le fait d'utiliser une
variable privée (on peut toujours utiliser les accesseurs publiques).
donc on n'est en aucun cas obligé d'avoir des variables statiques.
D'ailleurs il y a peu de temps j'ai été obligé de migrer des mé thodes
d'extensions vers des méthodes plus classique (pour l'occasion, souci s
de noms trop communs comme ton Add) et hors mis le fait de déplacer m on
code, de supprimer le premier argument (this)... et bien rien n'a chang é :)
Note: en y regardant de plus près une méthode d'extension ne peut p as en
fait être une méthode statique d'une classe. Son écriture nous tr ompe
vraiment sur sa vrai nature.
Bonjour tout le monde,
Ok pour l'expression sucre syntaxique :) ,...
Mais par contre pas trop pour le côté static : Pourquoi?
1) oui on déclare une méthode statique dans une classe statique hor s de
la calsse à étandre.
2) le premier argmuent est une instance de la classe étandue :) et ou i
UNE instance.
-> donc comme dit Christophe, il s'agit d'un sucre, mais d'un sucre en
morceaux, on a du solide derrière (une vrai instance) donc on peut fa ire
la même chose qu'avec une méthode, hors mis le fait d'utiliser une
variable privée (on peut toujours utiliser les accesseurs publiques).
donc on n'est en aucun cas obligé d'avoir des variables statiques.
D'ailleurs il y a peu de temps j'ai été obligé de migrer des mé thodes
d'extensions vers des méthodes plus classique (pour l'occasion, souci s
de noms trop communs comme ton Add) et hors mis le fait de déplacer m on
code, de supprimer le premier argument (this)... et bien rien n'a chang é :)
Note: en y regardant de plus près une méthode d'extension ne peut p as en
fait être une méthode statique d'une classe. Son écriture nous tr ompe
vraiment sur sa vrai nature.
Bonjour tout le monde,
Ok pour l'expression sucre syntaxique :) ,...
Mais par contre pas trop pour le côté static : Pourquoi?
1) oui on déclare une méthode statique dans une classe statique hor s de
la calsse à étandre.
2) le premier argmuent est une instance de la classe étandue :) et ou i
UNE instance.
-> donc comme dit Christophe, il s'agit d'un sucre, mais d'un sucre en
morceaux, on a du solide derrière (une vrai instance) donc on peut fa ire
la même chose qu'avec une méthode, hors mis le fait d'utiliser une
variable privée (on peut toujours utiliser les accesseurs publiques).
donc on n'est en aucun cas obligé d'avoir des variables statiques.
D'ailleurs il y a peu de temps j'ai été obligé de migrer des mé thodes
d'extensions vers des méthodes plus classique (pour l'occasion, souci s
de noms trop communs comme ton Add) et hors mis le fait de déplacer m on
code, de supprimer le premier argument (this)... et bien rien n'a chang é :)
Note: en y regardant de plus près une méthode d'extension ne peut p as en
fait être une méthode statique d'une classe. Son écriture nous tr ompe
vraiment sur sa vrai nature.
Bonjour tout le monde,
Ok pour l'expression sucre syntaxique :) ,...
Mais par contre pas trop pour le côté static : Pourquoi?
1) oui on déclare une méthode statique dans une classe statique hors de la
calsse à étandre.
2) le premier argmuent est une instance de la classe étandue :) et oui UNE
instance.
Bonjour tout le monde,
Ok pour l'expression sucre syntaxique :) ,...
Mais par contre pas trop pour le côté static : Pourquoi?
1) oui on déclare une méthode statique dans une classe statique hors de la
calsse à étandre.
2) le premier argmuent est une instance de la classe étandue :) et oui UNE
instance.
Bonjour tout le monde,
Ok pour l'expression sucre syntaxique :) ,...
Mais par contre pas trop pour le côté static : Pourquoi?
1) oui on déclare une méthode statique dans une classe statique hors de la
calsse à étandre.
2) le premier argmuent est une instance de la classe étandue :) et oui UNE
instance.
Au départ, j'avais compris qu'il s'agissait de convertir (cast) la liste
combinée déroulante en BindingList<string>.
Comme je me suis fait jeter à ce niveau-là (erreur CS0030), j'ai regardé
d'un peu plus près l'exemple fourni dans l'aide en ligne (pas avec un
BindingList<string> mais avec un BindingList<Part>). En fait, c'est un peu
plus sioux que ça, l'un doit agir sur l'autre, c'est bien ça ?
Donc, l'interface doit non pas créer un nouvel élément dans la liste
combinée déroulante, mais dans la BindingList, et c'est celle-ci qui va le
répercuter dans la liste combinée déroulante.
Et la BindingList n'a pas d'interface propre, en dehors de la liste
déroulante qu'on va explicitement mettre à jour via le délégué.
Ai-je bien perçu l'esprit de la chose ?
Au départ, j'avais compris qu'il s'agissait de convertir (cast) la liste
combinée déroulante en BindingList<string>.
Comme je me suis fait jeter à ce niveau-là (erreur CS0030), j'ai regardé
d'un peu plus près l'exemple fourni dans l'aide en ligne (pas avec un
BindingList<string> mais avec un BindingList<Part>). En fait, c'est un peu
plus sioux que ça, l'un doit agir sur l'autre, c'est bien ça ?
Donc, l'interface doit non pas créer un nouvel élément dans la liste
combinée déroulante, mais dans la BindingList, et c'est celle-ci qui va le
répercuter dans la liste combinée déroulante.
Et la BindingList n'a pas d'interface propre, en dehors de la liste
déroulante qu'on va explicitement mettre à jour via le délégué.
Ai-je bien perçu l'esprit de la chose ?
Au départ, j'avais compris qu'il s'agissait de convertir (cast) la liste
combinée déroulante en BindingList<string>.
Comme je me suis fait jeter à ce niveau-là (erreur CS0030), j'ai regardé
d'un peu plus près l'exemple fourni dans l'aide en ligne (pas avec un
BindingList<string> mais avec un BindingList<Part>). En fait, c'est un peu
plus sioux que ça, l'un doit agir sur l'autre, c'est bien ça ?
Donc, l'interface doit non pas créer un nouvel élément dans la liste
combinée déroulante, mais dans la BindingList, et c'est celle-ci qui va le
répercuter dans la liste combinée déroulante.
Et la BindingList n'a pas d'interface propre, en dehors de la liste
déroulante qu'on va explicitement mettre à jour via le délégué.
Ai-je bien perçu l'esprit de la chose ?
"Gloops" a écrit dans le message de group e
de discussion :Au départ, j'avais compris qu'il s'agissait de convertir (cast) la
liste combinée déroulante en BindingList<string>.
Comme je me suis fait jeter à ce niveau-là (erreur CS0030), j'ai
regardé d'un peu plus près l'exemple fourni dans l'aide en ligne ( pas
avec un BindingList<string> mais avec un BindingList<Part>). En fait,
c'est un peu plus sioux que ça, l'un doit agir sur l'autre, c'est bi en
ça ?
Hum, je suis pas sur de comprendre la question...
List<T> et BindingList<T> sont deux classes totalement distinctes, mais
qui implémentent toutes les deux IList<T> et/ou IEnumerable<T>.
Les items de la liste sont dans un IList (ou IEnumerable, je sais plus) ,
qui peut donc être concrètement un List comme un BindingList.
Lorsqu'on accède à la propriété Items de la liste déroulante, il doit
regarder si la propriété datasource est null, auquel cas il utilise une
List interne, qu'elle crée elle-même, ou la liste déroulante accè de au
conteneur qui a été bindé dans le cas contraire.
Donc, l'interface doit non pas créer un nouvel élément dans la l iste
combinée déroulante, mais dans la BindingList, et c'est celle-ci q ui
va le répercuter dans la liste combinée déroulante.
J'ai le flemme de vérifier, mais il est probable que ça fasse la mê me
chose si tu ajoutes un élément à travers
ma_liste_deroulante.Items.Add(...) : la propriété Items sera rediri gée
de toute façon vers la BindingList.
Et la BindingList n'a pas d'interface propre, en dehors de la liste
déroulante qu'on va explicitement mettre à jour via le délégué .
Ai-je bien perçu l'esprit de la chose ?
La BindingList n'est qu'un conteneur. Elle n'a donc pas, en effet, de
GUI(*) qui lui soit propre.
(*) Attention au terme interface, qui désigne quelque chose de
particulier en c#. Je pense que tu voulais dire GUI lorsque tu as parlé
d'interface.
"Gloops" <gloops@invalid.zailes.org> a écrit dans le message de group e
de discussion : esqV2QvUJHA.1360@TK2MSFTNGP05.phx.gbl...
Au départ, j'avais compris qu'il s'agissait de convertir (cast) la
liste combinée déroulante en BindingList<string>.
Comme je me suis fait jeter à ce niveau-là (erreur CS0030), j'ai
regardé d'un peu plus près l'exemple fourni dans l'aide en ligne ( pas
avec un BindingList<string> mais avec un BindingList<Part>). En fait,
c'est un peu plus sioux que ça, l'un doit agir sur l'autre, c'est bi en
ça ?
Hum, je suis pas sur de comprendre la question...
List<T> et BindingList<T> sont deux classes totalement distinctes, mais
qui implémentent toutes les deux IList<T> et/ou IEnumerable<T>.
Les items de la liste sont dans un IList (ou IEnumerable, je sais plus) ,
qui peut donc être concrètement un List comme un BindingList.
Lorsqu'on accède à la propriété Items de la liste déroulante, il doit
regarder si la propriété datasource est null, auquel cas il utilise une
List interne, qu'elle crée elle-même, ou la liste déroulante accè de au
conteneur qui a été bindé dans le cas contraire.
Donc, l'interface doit non pas créer un nouvel élément dans la l iste
combinée déroulante, mais dans la BindingList, et c'est celle-ci q ui
va le répercuter dans la liste combinée déroulante.
J'ai le flemme de vérifier, mais il est probable que ça fasse la mê me
chose si tu ajoutes un élément à travers
ma_liste_deroulante.Items.Add(...) : la propriété Items sera rediri gée
de toute façon vers la BindingList.
Et la BindingList n'a pas d'interface propre, en dehors de la liste
déroulante qu'on va explicitement mettre à jour via le délégué .
Ai-je bien perçu l'esprit de la chose ?
La BindingList n'est qu'un conteneur. Elle n'a donc pas, en effet, de
GUI(*) qui lui soit propre.
(*) Attention au terme interface, qui désigne quelque chose de
particulier en c#. Je pense que tu voulais dire GUI lorsque tu as parlé
d'interface.
"Gloops" a écrit dans le message de group e
de discussion :Au départ, j'avais compris qu'il s'agissait de convertir (cast) la
liste combinée déroulante en BindingList<string>.
Comme je me suis fait jeter à ce niveau-là (erreur CS0030), j'ai
regardé d'un peu plus près l'exemple fourni dans l'aide en ligne ( pas
avec un BindingList<string> mais avec un BindingList<Part>). En fait,
c'est un peu plus sioux que ça, l'un doit agir sur l'autre, c'est bi en
ça ?
Hum, je suis pas sur de comprendre la question...
List<T> et BindingList<T> sont deux classes totalement distinctes, mais
qui implémentent toutes les deux IList<T> et/ou IEnumerable<T>.
Les items de la liste sont dans un IList (ou IEnumerable, je sais plus) ,
qui peut donc être concrètement un List comme un BindingList.
Lorsqu'on accède à la propriété Items de la liste déroulante, il doit
regarder si la propriété datasource est null, auquel cas il utilise une
List interne, qu'elle crée elle-même, ou la liste déroulante accè de au
conteneur qui a été bindé dans le cas contraire.
Donc, l'interface doit non pas créer un nouvel élément dans la l iste
combinée déroulante, mais dans la BindingList, et c'est celle-ci q ui
va le répercuter dans la liste combinée déroulante.
J'ai le flemme de vérifier, mais il est probable que ça fasse la mê me
chose si tu ajoutes un élément à travers
ma_liste_deroulante.Items.Add(...) : la propriété Items sera rediri gée
de toute façon vers la BindingList.
Et la BindingList n'a pas d'interface propre, en dehors de la liste
déroulante qu'on va explicitement mettre à jour via le délégué .
Ai-je bien perçu l'esprit de la chose ?
La BindingList n'est qu'un conteneur. Elle n'a donc pas, en effet, de
GUI(*) qui lui soit propre.
(*) Attention au terme interface, qui désigne quelque chose de
particulier en c#. Je pense que tu voulais dire GUI lorsque tu as parlé
d'interface.
J'ai le flemme de vérifier, mais il est probable que ça fasse la mê me
chose si tu ajoutes un élément à travers
ma_liste_deroulante.Items.Add(...) : la propriété Items sera rediri gée
de toute façon vers la BindingList.
J'ai le flemme de vérifier, mais il est probable que ça fasse la mê me
chose si tu ajoutes un élément à travers
ma_liste_deroulante.Items.Add(...) : la propriété Items sera rediri gée
de toute façon vers la BindingList.
J'ai le flemme de vérifier, mais il est probable que ça fasse la mê me
chose si tu ajoutes un élément à travers
ma_liste_deroulante.Items.Add(...) : la propriété Items sera rediri gée
de toute façon vers la BindingList.