Как получить имя сборки и имя класса с полным пространством имен данного класса в решении? - PullRequest
9 голосов
/ 07 июля 2010

Я работаю с WPF и часто нуждаюсь в получении пространства имен и имени сборки для данного класса.Но я не знаю, как это сделать.

Итак, как мы можем получить имена при просмотре классов в обозревателе решений и / или при редактировании кодов классов?Пожалуйста, помогите!

Ответы [ 4 ]

13 голосов
/ 07 июля 2010

Вы можете использовать Visual Studio Немедленное окно в качестве быстрого способа получения квалифицированного имени сборки для одного из проектов решения.

IIRC, эти шаги должны работать:

  1. Открыть файл класса, содержащийся в проекте, для которого вы хотите получить имя сборки;
  2. Установить этот проект как стартовый проект для решения;
  3. Открыть Немедленное окно , ярлык среды C # по умолчанию: CTRL + D + I ;
  4. В Immediate Window введите typeof(ClassNameOfStep1).AssemblyQualifiedName и нажмите Введите .

Немедленное окно зависит от оценки выражения во время разработки который в свою очередь зависит от процесса размещения Visual Studio, поэтому вам нужно включить его, который по умолчанию уже есть.

Кроме того, я провел несколько быстрых тестов, и имя класса было достаточным во всех случаях, кроме случаев, когда я пробовал его на VS 2008, что требовало от меня FullName типа. Поэтому, если Name приведет к ошибке, используйте Name с указанием пространства имен.

4 голосов
/ 07 июля 2010

Это должно дать вам то, что вы ищете:

var assemblyName = typeof(ClassNameGoesHere).AssemblyQualifiedName;
var namespaceOfClass = typeof(ClassNameGoesHere).Namespace;

Я вижу, что вы только что добавили примечание к вашему вопросу относительно "при просмотре классов в обозревателе решений", простой ответ заключается в том, что, насколько я знаю, вы не можете, потому что это не то, для чего предназначен обозреватель решений. (он предназначен для просмотра файлов в решении, а не того, что в них содержится), а также потому, что:

  1. Один файл может содержать несколько занятия
  2. Все файлы в одном проекте будет, как правило, всегда компилировать на одну сборку, делая это избыточно отображать это имя для каждый файл.

Возможно, вы захотите узнать, дает ли «Представление класса» то, что вы хотите, но, подозреваю, этого не произойдет.

2 голосов
/ 26 августа 2011

Вы можете использовать интерактивный F #, просто откройте окно (Вид -> Другие окна -> Интерактивный F #) и попробуйте следующее:

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

Есть несколько сборок, на которые ссылаются автоматически, например, Система.Если вам нужно получить имя из другой сборки, сначала нужно добавить ссылку (например, модель сервиса).

> #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"

Интерактивный F # является частью Visual Studio 2010.

0 голосов
/ 07 июля 2010

Вам нужно Object Browser.Нажмите Ctrl + Alt + J .

Там вы увидите всю метаинформацию типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...