簡體   English   中英

如何獲得名稱空間中的所有類?

[英]How can I get all classes within a namespace?

如何在C#的命名空間中獲取所有類?

您將需要“向后”進行; 列出程序集中的所有類型,然后檢查每種類型的名稱空間:

using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
    return 
      assembly.GetTypes()
              .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
              .ToArray();
}

用法示例:

Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
    Console.WriteLine(typelist[i].Name);
}

對於.Net 2.0之前不存在Assembly.GetExecutingAssembly()的任何內容,您將需要一個小的解決方法來獲取程序集:

Assembly myAssembly = typeof(<Namespace>.<someClass>).GetTypeInfo().Assembly;
Type[] typelist = GetTypesInNamespace(myAssembly, "<Namespace>");
for (int i = 0; i < typelist.Length; i++)
{
    Console.WriteLine(typelist[i].Name);
}

您需要提供更多信息...

您的意思是使用反射。 您可以遍歷程序集清單並使用以下方法獲取類型列表

   System.Reflection.Assembly myAssembly = Assembly.LoadFile("");

   myAssembly.ManifestModule.FindTypes()

如果只是在Visual Studio中,則可以在智能感知窗口中獲取列表,或通過打開對象瀏覽器(CTRL + W,J)

使用反射,您可以遍歷裝配中的所有類型。 類型具有Namespace屬性,可用於僅過濾您感興趣的名稱空間。

暫無
暫無

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

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