我如何获得名称空间内的所有类?

我如何获得C#中的命名空间中的所有类?

你需要做“倒退”; 列出程序集中的所有types,然后检查每个types的名称空间:

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); } 

对于不支持“Assembly.GetExecutingAssembly()”的.net 1.0.4和其他版本,您将需要一个小的解决方法来获取程序集:

 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); } 

你需要提供更多的信息.​​..

你的意思是使用reflection。 你可以遍历一个Assembly Manifest并获取一个使用的types列表

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

如果只是在Visual Studio中,则只需在智能感知窗口中获取列表,或者打开对象浏览器(CTRL + W,J)

使用reflection,您可以循环查看程序集中的所有types。 一个types有一个名称空间属性,你只用来过滤你感兴趣的命名空间。