You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成展示.NET 7 C#项目所有内部关系的类图?

生成.NET 7 C#项目全关系类图的可行方案

下面是几个能满足你需求的方案,可覆盖类继承、成员关联、方法引用,同时过滤掉第三方类:

一、基于Roslyn编写自定义分析工具

利用Roslyn(.NET Compiler Platform)直接分析源代码,精准控制要提取的关系:

  • 引入Microsoft.CodeAnalysis.CSharp NuGet包,加载项目的语法树与编译上下文
  • 遍历所有类节点,通过命名空间过滤掉非自定义类(比如只保留你项目的命名空间)
  • 提取继承关系:获取每个类的基类/接口,仅保留属于自定义命名空间的类型
  • 提取成员关联:分析字段、属性的类型,若为自定义类则记录双向关联
  • 提取方法内引用:遍历方法体的语法节点,捕捉对自定义类的实例化、方法调用、静态成员访问等操作,记录调用关系
  • 将收集到的所有关系转换成PlantUML格式代码,直接生成类图

二、使用NDepend工具

NDepend对.NET Core/.NET 7支持完善,自带强大的依赖分析与可视化能力:

  • 导入你的.NET 7项目,工具会自动扫描所有代码
  • 在依赖图的过滤面板中,添加规则排除SFML.Audio、System.Random等第三方命名空间/类型
  • 开启"展示方法调用依赖"、"字段/属性关联"、"继承关系"等选项
  • 可直接在工具内查看交互式类图,也能导出为PlantUML、PNG等格式

三、调整现有PlantUML生成器的配置

你之前试用的PlantUML生成器,可通过配置开启方法引用分析并过滤第三方类:

  • 找到工具的配置文件,开启AnalyzeMethodBodies或类似开关,让工具扫描方法内的引用
  • 添加命名空间白名单,仅包含你项目的自定义命名空间,自动排除第三方类型
  • 重新运行生成器,即可得到包含方法引用的类图

通用注意事项

  • 明确自定义类的命名空间范围,这是过滤第三方类的核心依据
  • 若项目包含多个类库,确保工具能扫描到所有相关项目文件/程序集

内容的提问来源于stack exchange,提问作者TheGha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:46:01