Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Richard Clark

J'aime pas les blogs mais comme j'aime le mouton...

Actualités

  • c2i.fr
Appel d'une méthode private d'une classe internal + et dans .NET 3.0 ?

Dans un récent post sur son blog, Cyril s'étonne de la possibilité d'appeler une méthode private d'une classe internal depuis une application externe.

Bon, je vous invite à lire les commentaires qui vous expliquerons le pourquoi, le comment. Je rajouterais que grâce à cela, on peut avoir un IDE dans VS sympatique.

Je rajouterais également que si t'avais lu correctement mon livre que j'ai écris fin 2001 pour ce passage, tu le saurais depuis longtemps nunuche (mais t'étais ou y'a 5 ans ? Dujardin commençait chouchou lui!!!) ;-))) (bon ok c'était du VB donc inintéressant)

Ceci dit, il y a actuellement un débat interne sur l'implémentation de la dernière portée qui manque aux langages .NET comme C# et VB mais qui sont possibles en IL : Friend AND Assembly.

Pensez-vous que ce serait intéressant de l'avoir pour ces langages dans les versions des traducteurs VB et C# pour le framework 3 ?

Si oui pourquoi ?
Enfin si oui, quel serait leurs noms dans les langages correspondants ?

 

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 23 juin 2006 07:51 par richardc

Commentaires

RaptorXP a dit :

Ca correspondrait à quoi exactement cette portée ? Ca s'applique à une classe et/ou un membre ?
# juin 23, 2006 09:49

Jb Evain a dit :

En réponse au commentaire:
Cette portée veut tout simplement dire: accessible aux types dérivés dans l'assembly courante seulement. En C#, on a aussi une visibilité méconnue, "protected internal", qui veut dire accessible aux types dérivés partout, plus tout le monde dans l'assembly courante.

Bref, ce sont des visibilitées compliquées, dont on peut se passer. Dans des rares cas, ça sert. Donc bon, ni vraiment pour, ni vraiment contre.

Le C++/CLI l'a lui. Donc bon, en C#, si ça devrait être implémenté, autant avoir le même modifier: "protected private". Mais on perd la notion "internal" alors.
# juin 23, 2006 10:27

RaptorXP a dit :

Si c'est possible en IL, je pense que ca ne coute rien de l'ajouter, si on veut pas l'utiliser, on ne l'utilise pas et le jour ou en en a besoin on est bien content.

Sinon pour le nom, je ne suis pas trop d'accord avec protected private, car protected internal signifie "la portée protected PLUS la portée internal" alors que "protected private" c'est pas "la portée protected PLUS la portée private"...
# juin 23, 2006 11:03

Jb Evain a dit :

C'est un raisonnement idiot. Ce n'est pas parce que c'est disponible en CIL que ça ne coûte rien de l'ajouter. Au contraire.

Si on suivait ce raisonnement on pourrait utiliser des pointeurs de fonctions en C#. On pourrait jouer sur la covariance et la contravariance des types génériques. On pourrait avoir des champs du même nom, juste différenciés par les types, j'en passe et des meilleures.

Maintenant présente moi un exemple pertinent où "on" serait bien content d'avoir un type famandassem ?

Et non, protected internal ne veut pas dire protected plus internal, mais protected OR internal. OR au sens logique.
# juin 23, 2006 11:52

richardc a dit :

Jb: cool SVP!
# juin 23, 2006 11:55

Jb Evain a dit :

Richard : Mais je le suis :) Et toi alors du coup, ton avis ?

# juin 23, 2006 12:04

richardc a dit :

J'avoue ne pas avoir trop d'avis. On a vécu sans, on peut vivre sans. Je vois plus ca par rapport au processus de développement d'un type que pour de pures raisons de POO. Par exemple, l'ajout des classes partielles est bien (sauf en VB ou partial n'est pas obligatoire partout ;-)) mais cela peut engendrer, dans le cadre de dev en équipe de pbs.
# juin 23, 2006 12:52

RaptorXP a dit :

On a exactement les mêmes fonctionalités que les pointeurs de fonctions avec les delegates, pour info... Et autoriser la covariance des generics ca diminuerait le contrôle à la compilation et le langage serait moins rigoureux, on aurait plus d'erreurs à l'execution.

Cette nouvelle visibilité c'est l'inverse, ça donne au développeur plus de possibilités pour détecter d'éventuels problèmes à la compilation (et ça n'induit pas de problème a l'execution). Après c'est sur que ca ne servira que dans des cas bien particulers.

Sinon tu peux jouer sur les mots mais "protected OR private" c'est équivelent à protected...
# juin 23, 2006 15:48

Jb Evain a dit :

Merci pour les delegates, mais j'étais au courant hein ;) Mon point était de dire que, ce n'est pas parce que la fonctionnalité existe dans le runtime, qu'il faut que tous les langages l'implémentent.

Concernant la variance des types génériques, je me dois de m'inscrire en faux. C'est type safe, et vérifié statiquement. Un lien sympatique à ce sujet:

http://blogs.msdn.com/rmbyers/archive/2005/02/16/375079.aspx

Une nouvelle visibilité ne donne pas au développeur "plus de possibilités pour détecter d'éventuels problèmes à la compilation". Ça rajoute juste une nouvelle visibilité :)

Finalement la question est ici de savoir si c'est souhaitable de l'ajouter, et comment.

Concernant le "protected private", comme je l'ai dis, on perd l'information "internal", ça vient du C++  où ça a tout son sens, je suis d'accord pour dire que ce n'est pas adapté.

Puisque tu aimerais que ce soit implémenté, que proposes tu comme syntaxe pour exprimer cette visibilité ?

Une autre solution que moi je proposerais, ce serait de jouer sur l'ordre de protected internal/internal protected. Mais elle est loin d'être parfaite.
# juin 23, 2006 18:40
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le il y a 34 minutes

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le il y a 21 heures et 10 minutes

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le 10-09-2008, 23:39

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52