簡體   English   中英

如何在解決方案中獲取具有給定類的完整命名空間的程序集名稱和類名?

[英]How to get the assembly name and class name with full namespace of a given class in the solution?

我正在使用WPF,並且經常需要獲取給定類的名稱空間和程序集名稱。 但我不知道該怎么做。

那么,如何在解決方案資源管理器中瀏覽類時和/以及編輯類的代碼時獲取名稱? 請幫忙!

您可以使用Visual Studio 立即窗口作為獲取其中一個解決方案項目的程序集限定名稱的快速方法。

IIRC,這些步驟應該有效:

  1. 打開要獲取程序集名稱的項目中包含的類的文件;
  2. 將該項目設置為解決方案的啟動項目;
  3. 打開立即窗口 ,默認C#環境快捷鍵是CTRL + D + I ;
  4. 在立即窗口中鍵入typeof(ClassNameOfStep1).AssemblyQualifiedName並按Enter鍵

立即窗口依賴於設計時表達式評估,而后者依賴於Visual Studio托管過程,因此您需要啟用它,默認情況下已啟用。

此外,我做了一些快速測試,除了我在VS 2008上嘗試它時,類的名稱在所有情況下都足夠了,這要求我提供該類型的FullName 因此,如果Name導致錯誤,請使用Name命名空間。

這些應該給你你想要的東西:

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

我看到你剛剛在關於“在解決方案瀏覽器中瀏覽課程時”的問題添加了一個注釋,簡單的答案就是據我所知,你不能,因為那不是解決方案資源管理器所針對的(它在那里)用於瀏覽解決方案中的文件,而不是其中包含的內容),還因為:

  1. 一個文件可以包含多個類
  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的一部分。

你需要Object Browser Ctrl + Alt + J.

在那里你會看到所有類型的元信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM