Microsoft.VisualBasic : Des méthodes dans un espace de nom ?! [Résolu]

Signaler
Messages postés
234
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
-
Messages postés
234
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
-
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

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
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 
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
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
Messages postés
234
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
1
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 ^^
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
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 
Messages postés
234
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
1
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.