我正在使用WPF,并且经常需要获取给定类的命名空间和程序集名称。但我不知道该怎么做。
那么,在解决方案资源管理器中浏览类时和/以及编辑类的代码时,我们如何获取名称?请帮忙!
答案 0 :(得分:13)
您可以使用Visual Studio 立即窗口作为获取其中一个解决方案项目的程序集限定名称的快捷方式。
IIRC,这些步骤应该有效:typeof(ClassNameOfStep1).AssemblyQualifiedName
,然后按输入。立即窗口取决于设计时表达式评估 这反过来取决于Visual Studio托管过程,因此您需要启用它,默认情况下已经启用它。
另外,我做了一些快速测试,并且在所有情况下类的名称都足够了,除非我在VS 2008上尝试它,这要求我提供类型的FullName
。因此,如果Name
导致错误,请使用符合命名空间的Name
。
答案 1 :(得分:4)
这些可以为您提供您所追求的目标:
var assemblyName = typeof(ClassNameGoesHere).AssemblyQualifiedName;
var namespaceOfClass = typeof(ClassNameGoesHere).Namespace;
我看到你刚刚在关于“在解决方案浏览器中浏览课程时”的问题添加了一个注释,简单的答案就是据我所知,你不能,因为那不是解决方案资源管理器的用途(它用于浏览解决方案中的文件,而不是其中包含的内容),还因为:
您可能想看看“班级视图”是否为您提供了所需内容,但我怀疑它不会。
答案 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 。
在那里你会看到所有类型的元信息。