Microsoft.VisualBasic : Des méthodes dans un espace de nom ?!

Résolu
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 - 7 déc. 2008 à 00:30
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 - 7 déc. 2008 à 14:38
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 ?

5 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
7 déc. 2008 à 00:34
salut,

une faute ou une aide, façon de voir les choses....
elle est présente uniquement pour aider les dev VB6 à migrer progressivement vers dotnet

la classe complète est à décocher et donc à éviter


<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
7 déc. 2008 à 11:39
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

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
7 déc. 2008 à 00:41
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 ^^
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
7 déc. 2008 à 01:48
ne faisant pas de dotnet je ne suis pas bien placé pour te répondre...

dans l'explorateur d'objet, {}Microsoft.VisualBasic indique :
Namespace Microsoft.VisualBasic
     Membre de Microsoft.VisualBasic

Namespace Microsoft.VisualBasic
     Membre de System

il n'y a pas de confusion entre les 2?
peut-être l'espace de nom, "vide", et la classe elle contenant les méthodes? le tout avec le même nom?

je laisse ma place à un dotnetien , désolé

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
7 déc. 2008 à 14:38
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.
0