如何在解决方案中获取具有给定类的完整命名空间的程序集名称和类名?

时间:2010-07-07 08:52:00

标签: c# wpf visual-studio-2010

我正在使用WPF,并且经常需要获取给定类的命名空间和程序集名称。但我不知道该怎么做。

那么,在解决方案资源管理器中浏览类时和/以及编辑类的代码时,我们如何获取名称?请帮忙!

4 个答案:

答案 0 :(得分:13)

您可以使用Visual Studio 立即窗口作为获取其中一个解决方案项目的程序集限定名称的快捷方式。

IIRC,这些步骤应该有效:

  1. 打开要获取程序集名称的项目中包含的类的文件;
  2. 将该项目设置为解决方案的启动项目;
  3. 打开立即窗口,默认C#环境快捷方式为 CTRL + D + I ;
  4. 在立即窗口中键入typeof(ClassNameOfStep1).AssemblyQualifiedName,然后按输入
  5. 立即窗口取决于设计时表达式评估  这反过来取决于Visual Studio托管过程,因此您需要启用它,默认情况下已经启用它。

    另外,我做了一些快速测试,并且在所有情况下类的名称都足够了,除非我在VS 2008上尝试它,这要求我提供类型的FullName。因此,如果Name导致错误,请使用符合命名空间的Name

答案 1 :(得分:4)

这些可以为您提供您所追求的目标:

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

我看到你刚刚在关于“在解决方案浏览器中浏览课程时”的问题添加了一个注释,简单的答案就是据我所知,你不能,因为那不是解决方案资源管理器的用途(它用于浏览解决方案中的文件,而不是其中包含的内容),还因为:

  1. 一个文件可以包含多个文件 课程
  2. 一个项目中的所有文件 一般来说,总是要编译下来 制作一个组件 冗余以显示该名称 每个文件。
  3. 您可能想看看“班级视图”是否为您提供了所需内容,但我怀疑它不会。

答案 2 :(得分:2)

您可以使用F#interative,只需打开窗口(查看 - >其他Windows - > F#Interactive)并尝试以下操作:

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

有一些自动引用的程序集,如System。如果您需要从另一个程序集中获取名称,则需要先添加引用(例如服务模型)。

> #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#interative是Visual Studio 2010的一部分。

答案 3 :(得分:-3)

您需要Object Browser。按 Ctrl + Alt + J

在那里你会看到所有类型的元信息。