簡體   English   中英

在特定目錄中獲取所有名稱空間

[英]Getting all namespaces in certain directory

我試圖找到一種方法來檢索我們測試目錄中的所有名稱空間。 項目中的所有類共享相同的名稱空間,因此我也需要獲取該類。 我正在尋找的結果應如下所示

Project.ClassA
Project.ClassB

其中Project是名稱空間,ClassA是類名稱。 我嘗試了這樣的功能...

assembly = Assembly.GetAssembly(typeof(System.Int32));
var groups = assembly.GetTypes().Where(t => t.IsClass);

foreach(var group in groups)
{
   Console.WriteLine(group);
}

但是,這將返回大量系統信息,與我正在尋找的內容無關。 我在正確的軌道上嗎? 另外,如何使它僅在測試目錄中顯示?

這將為您提供屬於當前應用程序域的所有類型(即,已加載的所有類型):

var types = AppDomain.CurrentDomain
    .GetAssemblies()
    .SelectMany(a => a.GetTypes());

如果要過濾該列表,只需添加一個Where子句:

var types = AppDomain.CurrentDomain
    .GetAssemblies()
    .SelectMany(a => a.GetTypes())
    .Where(a => !string.IsNullOrEmpty(a.Namespace) && 
                a.Namespace.StartsWith("Foo"));

與他們一起做一些事情:

foreach(var type in types)
{
    Console.WriteLine($"Found type {type.Name}");
}

暫無
暫無

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

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