Je viens de découvrir quelque chose auquel je n'avais jamais prêté attention avant ...
Dans l'espace de nom "Microsoft.VisualBasic" on peut directement trouver des méthodes, énumérations, etc... Comme s'il s'agissait d'une classe statique. C'est totalement impossible, et totalement absurde dans le contexte de l'orienté objet non ?
Est-ce une faute de la part des développeurs ?
A voir également:
Un espace de noms ne peut pas contenir directement des membres tels que des champs ou des méthodes
Comme le dit PCPT, Microsoft.VisualBasic est une assembly bien particulière qui a été créée pour permettre à l'assistant de migration des projets VB6 de travailler un minimum correctement, et elle ne devrait d'ailleurs être utiliser que pour cela. Il n'est pas impossible qu'elle soit codée différenment des autres
Ceci dit, si je reprend ton exemple, et si je le code correctement :
Namespace MonNameSpace
Module MonModule
Public Sub DireBonjour()
End Sub
End Module
End Namespace
Je vois bien la fonction DireBonjour directement sous le NameSpace comme pour M$.VisualBasic. Cela n'a donc rien d'illogique
Mais le problème, c'est que c'est un NameSpace et qu'on y trouve des méthodes ... Essaie de faire par exemple :
NameSpace MonNameSpace
Public Sub DireBonjour()
End Sub
End NameSpace
VisualStudio va grossièrement t'insulter et c'est tout a fait normal, une méthode n'a rien à faire dans un NameSpace. Donc je ne vois pas pourquoi le
NameSpace VisualBasic est remplit de méthodes, c'est totalement incohérent, et cela ressemble méchamment à une bourde des développeurs ^^
Ah oui tiens O_o Déclaré dans un module il apparaît directement dans le NameSpace ...
Au temps pour moi alors ^^ Enfin cela reste une bizarrerie qu'on puisse appeler une méthode comme suit : NameSpace.Methode. Je n'ai jamais vu ça dans aucun langage orienté objet, et d'ailleurs c'est une infraction grave aux lois de l'OO =P
Enfin certes, c'est vrai que c'est pour faciliter la migration vers le .NET mais je trouve ça quand même honteux que cela soit toléré de faire ce genre de choses dans son propre projet :/ J'espère que dans VB10, ces vilains modules tellement paradoxaux auront enfin disparus --', on n'en voit encore tellement dans des sources VB.NET.