10
votes

Comment obtenir le nom de montage et le nom de la classe avec un espace de nom complet d'une classe donnée dans la solution?

Je travaille avec WPF et j'ai souvent la nécessité d'obtenir le nom de noms de noms et l'assemblage d'une classe donnée. Mais je ne sais pas comment faire ça.

Alors, comment pouvons-nous obtenir les noms lors de la navigation dans les classes de l'explorateur de solution ou / et lors de la modification des codes de la classe? S'il vous plaît aider!


0 commentaires

4 Réponses :


5
votes

Ceux-ci devraient vous donner ce que vous êtes après: xxx

Je vois que vous venez d'ajouter une note à votre question concernant "lors de la navigation des classes de l'explorateur de solutions", le simple La réponse est que, autant que je sache, vous ne pouvez pas parce que ce n'est pas ce que l'explorateur de solution est pour (c'est là pour parcourir les fichiers dans une solution, pas ce qui est contenu à l'intérieur d'eux) et aussi parce que:

  1. Un fichier peut contenir plusieurs Classes
  2. Tous les fichiers d'un projet Will, généralement, toujours compilé à un seul assemblage, ce qui en fait redondant pour afficher ce nom pour chaque fichier.

    Vous voudrez peut-être voir si la "vue de la classe" vous donne ce que vous voulez, mais je soupçonne que ce ne sera pas.


3 commentaires

Bonjour Rob, je cherche une solution sans codage. Merci quand même.


@NAM GI VU, j'ai ajouté une mise à jour pour prendre en compte votre ajout à la question concernant l'explorateur de solutions.


Je vois. J'ai essayé dans la vue de la classe mais aucune aide là-bas. J'ai mis à jour pour ajouter le cas: lors de la modification des codes de la classe.



-4
votes

Vous avez besoin de Navigateur d'objets . Appuyez sur CTRL + alt + j .

Là, vous verrez toutes les méta-informations de types.


1 commentaires

Pouvez-vous expliquer plus sur les méta informations que je devrais rechercher?



14
votes

Vous pouvez utiliser la fenêtre Visual Studio Immédiate comme moyen rapide d'obtenir le nom qualifié de montage pour l'un des projets de solution.

IIRC, ces étapes doivent fonctionner:

  1. Ouvrez le fichier d'une classe contenue dans le projet pour lequel vous souhaitez obtenir le nom de l'assemblage;
  2. Définissez ce projet comme projet de démarrage pour la solution;
  3. Ouvrez la fenêtre Fenêtre immédiate , le raccourci d'environnement C # par défaut est Ctrl + d + i ;
  4. dans le type de fenêtre immédiat typeof (classnameofstep1) .AssemblblyqualifeName et appuyez sur Entrée .

    La fenêtre immédiate dépend de l'évaluation de l'expression du temps de conception Ce qui à tour de rôle dépend du processus d'hébergement Visual Studio, vous devez donc l'avoir activé, par défaut déjà.

    En outre, j'ai fait des tests rapides et le nom de la classe suffisait dans tous les cas, sauf lorsque je l'ai essayé sur VS 2008, ce qui m'apprend à fournir le Fullname du type. Donc, si Nom entraîne une erreur Utilisez le nom qualifié avec l'espace de noms.


7 commentaires

J'ai essayé, mais j'ai eu une erreur "Le type de type ou d'espace de noms" myClass "n'est pas valide dans cette lunette"


@Nam gi Vu, au lieu de myClass essayer d'utiliser myNamespace.myclass .


@ANGELO: Je mets dans l'espace de noms complet de la classe mais ne fonctionne pas non plus. J'ai eu "CCC 'n'existe pas dans l'espace de noms" A.BB "" lorsque je passe dans type de ".


@NAM GI VU Assurez-vous que votre application est en cours d'exécution


@NAM GI VU, j'ai mis à jour ma réponse avec une étape manquante (2). Vérifiez si cela résout l'erreur. Il devrait le résoudre, mais même s'il fait que cette nouvelle étape supprime la simplicité de la solution.


@ANGELO: Je l'ai eu maintenant. Grâce à une idée de collègue de la mine: Besoin d'exécuter la solution et pendant l'exécution de l'application, procédez à vos étapes de votre suggestion ci-dessus. Merci Angelo.


Vous n'avez pas besoin de courir les gars. Juste faire l'étape 2 (définissez le projet de démarrage).



2
votes

Vous pouvez utiliser F # InterAtive, il suffit d'ouvrir la fenêtre (vue -> d'autres fenêtres -> F # interactive) et essayez ce qui suit: xxx pré>

Il y a quelques assemblages référencés automatiquement comme le système. Si vous devez obtenir le nom d'un autre assemblage, vous devez ajouter la référence en premier (comme le modèle de service par exemple). P>

> #r "System.ServiceModel.dll";;

--> Referenced 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.ServiceModel.dll'

> typedefof<System.ServiceModel.ICommunicationObject>.Assembly.FullName;;
val it : string =
  "System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"


0 commentaires