如何查看任意C#命名空间中的所有类和方法?以NuGet API为例
如何查看C#命名空间下的所有类和方法
嘿,这个需求太实用了!不管是刚引入新的NuGet包,还是想探索某个系统命名空间的内容,我来给你分享几种靠谱的方法:
一、用IDE直接查看(最省心)
不管你用Visual Studio还是JetBrains Rider,都有现成的可视化工具,完全不用写代码:
转到定义法:在代码里找到你引用的命名空间(比如
using Newtonsoft.Json;),右键点击命名空间名称,选择「转到定义」(VS里是Go to Definition,Rider里是Go to Declaration),IDE会直接打开一个视图,展示这个命名空间下所有的公共类、接口、枚举等成员。点击每个类,还能看到它的所有方法、属性、字段。类视图/对象浏览器:
- 在VS里,点击顶部菜单「视图」→「类视图」(Class View),然后在左侧树状结构里找到目标命名空间,展开就能看到所有类,再展开类就能看到成员。
- 或者用「对象浏览器」(View → Object Browser),这里可以筛选特定的程序集,找到你要的命名空间,结构更清晰,还能看到成员的访问修饰符和签名。
智能提示快速预览:在代码里输入命名空间名称,然后打个
.,IDE的智能提示会自动列出该命名空间下所有可访问的类和类型。选中某个类后再打.,就能看到它的所有方法、属性了——这个方法在写代码的时候随手用特别方便。
二、用C#反射代码获取(适合自动化/脚本场景)
如果需要批量获取或者不想依赖IDE,可以写一段简单的反射代码来遍历命名空间下的所有类和方法:
using System; using System.Reflection; using System.Linq; namespace NamespaceInspector { class Program { static void Main(string[] args) { // 替换成你要查询的目标命名空间 string targetNamespace = "Newtonsoft.Json"; // 方式1:通过该命名空间下的某个已知类型获取程序集 Assembly targetAssembly = typeof(Newtonsoft.Json.JsonConvert).Assembly; // 方式2:直接通过程序集名称加载(需要知道准确的程序集名) // Assembly targetAssembly = Assembly.Load("Newtonsoft.Json"); // 筛选出命名空间下的所有公共类型(排除嵌套类的话可以加!t.IsNested) var relevantTypes = targetAssembly.GetTypes() .Where(t => t.Namespace == targetNamespace && t.IsPublic) .OrderBy(t => t.Name); foreach (var type in relevantTypes) { Console.WriteLine($"📦 类/接口: {type.Name}"); // 获取所有公共实例方法和静态方法(可根据需求调整BindingFlags) var methods = type.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static) .OrderBy(m => m.Name); foreach (var method in methods) { // 格式化方法参数,方便查看 var paramList = string.Join(", ", method.GetParameters() .Select(p => $"{p.ParameterType.Name} {p.Name}")); Console.WriteLine($" 🛠️ 方法: {method.Name}({paramList})"); } Console.WriteLine(); } } } }
代码说明:
- 替换
targetNamespace为你要查看的命名空间即可; - 如果不知道程序集里的具体类型,用
Assembly.Load("程序集名称")加载,但要确保程序集已经被引用; - 可以通过调整
BindingFlags来筛选不同访问级别(比如私有方法)、成员类型(比如只看静态方法)。
三、用工具反编译查看(底层视角)
如果你想看到更底层的结构,或者没有IDE的情况下,可以用反编译工具:
- ILDASM:Windows系统自带的工具,打开命令提示符输入
ildasm,然后把NuGet包对应的dll文件(一般在项目的packages文件夹或者bin/Debug目录里)拖拽到窗口里,就能看到完整的命名空间、类、方法的IL结构,展开节点就能查看所有成员。 - dnSpy:第三方开源的.NET反编译工具,功能更强大,不仅能查看类和方法,还能编辑IL代码,适合深入研究。
内容的提问来源于stack exchange,提问作者Ra1000




