我如何获得名称空间内的所有类?
我如何获得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有一个名称空间属性,你只用来过滤你感兴趣的命名空间。