Si c'était le cas, tu n'aurais peut-être pas besoin de Postsharp à l'heure actuelle, car Microsoft aurait peut-être fait un framework 2.0 avec des templates...
Mais du coup, nous demanderais-tu comment serait le framework s'il avait été conçu dès le départ avec des templates... ?
En fait je ne connais pas très bien le mécanisme des templates car je ne connais pas le C++. A la lecture de ton post, je me suis un peu renseigné sur les templates mais je n'arrive pas encore bien à saisir la différence avec les génériques à part le fait qu'ils sont traités à la compilation et qu'il génèrent autant de méthodes que de types génériques fermés. Pourrais-tu m'expliquer pourquoi ils permettraient de se passer de PostSharp ?
L'implémentation de postsharp ou d'un mécanisme similaire dans le framework serait très bien mais est-ce que ça remettrait tant en cause à la structure de ce dernier ? J'ai du mal à me l'imaginer... peut être que oui.
Euh... BindingList<T> hérite de Collection<T> qui implémente ces interfaces...
Euh oui très juste... mais il reste quand même la moitié des interfaces qui sont inutiles : toutes celles qui ne sont pas génériques. Ca fait quand même un paquet d'implémentation pour une collection. Bon ça reste des interfaces...
Et IBindingList<T> servirait à rien (à mon avis) : l'idée du binding, c'est de se baser sur la réflexion, et la DGV par exemple aurait beau connaître le type T des éléments de sa source, elle saurait pas quoi faire de cette info.
Il me semble que le binding se base sur le typeDescriptor et non la réflexion. Or ce dernier, de même que les classes propertyDescriptor, FieldDescriptor,... auraient put être génériques. Cela aurait par exemple permit de créer des vues génériques d'objets et de collections.
Pour ce qui est de tes remarques sur le système d'événements (avec les OnBidule(object sender, MachinEventArgs e), je vois pas le rapport avec les Generics.
Il pourrait exister une classe EventHandler<TSender, TEventArgs>. Dans le cas de bouton on aurait :
public event EventHandler<Button, EventArgs> Click;
Bon cet événement existe également dans la classe Control. Mais quel serait l'inconvénient de le masquer pour chaque classe dérivée ?
Partager