[英]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.