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

Nam*_* VU 9 c# wpf visual-studio-2010

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

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

Joã*_*elo 13

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

IIRC,这些步骤应该有效:

  1. 打开要获取程序集名称的项目中包含的类的文件;
  2. 将该项目设置为解决方案的启动项目;
  3. 打开立即窗口,默认C#环境快捷方式是CTRL+ D+ I;
  4. 在立即窗口类型中typeof(ClassNameOfStep1).AssemblyQualifiedName按,然后按Enter.

即时窗口取决于设计时表达式评估这又取决于Visual Studio中宿主进程,所以你需要把它启用,默认情况下已经是了.

此外,我做了一些快速测试,除了我在VS 2008上试用它时,类的名称在所有情况下都足够了,这要求我提供FullName类型.因此,如果Name错误结果使用Name限定名称与命名空间.

  • @Nam Gi VU,而不是`MyClass`尝试使用`MyNamespace.MyClass`. (2认同)
  • @Nam Gi Vu,我用一个缺失的步骤(2)更新了我的答案.检查是否能解决错误.它应该解决它,但即使它做了这个新的步骤类型消除了解决方案的简单性. (2认同)

Rob*_*Rob 5

这些应该给你你所追求的:

var assemblyName = typeof(ClassNameGoesHere).AssemblyQualifiedName;
var namespaceOfClass = typeof(ClassNameGoesHere).Namespace;
Run Code Online (Sandbox Code Playgroud)

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

  1. 一个文件可以包含多个类
  2. 通常,一个项目中的所有文件将始终编译为单个程序集,这使得为每个文件显示该名称变得多余。

您可能想查看“类视图”是否为您提供了您想要的内容,但我怀疑它不会。