探索类型依赖图
JetBrains Rider 允许您直观地研究解决方案中类型之间的依赖关系。 您可以将来自不同项目或已编译程序集的任意数量的类型添加到类型依赖图中,并研究它们之间的不同依赖关系。
构建初始图表
有几种方法可以构建新的类型依赖图:
在 Solution Explorer 中选择一个或多个项目,右键点击所选内容,然后选择 ,或者按 Ctrl+Alt+Shift+A 然后选择 显示类型依赖项图。
在这种情况下,所选项目中声明的所有类型都会添加到图表中,并可视化聚合、使用和继承 依赖关系。
将光标放置在 编辑器 的任意位置,按 Ctrl+Alt+Shift+A ,然后选择 显示类型依赖项图。
在这种情况下,文件中的所有类型都会添加到图表中,并可视化聚合、使用和继承 依赖关系。
在 Show Usages 的结果列表弹出窗口中, 转到基符号、 转到派生符号、 导航到:公开 API 或类似命令中,点击 在图上显示
。对于基类/派生符号,相应的继承层次结构部分会添加到图表中,并且仅可视化继承 依赖关系。 对于暴露的 API,图表会显示包含返回给定类型的方法的类型,并且仅可视化返回类型 依赖关系。
在 查找 窗口或 Type Hierarchy 中显示的结果列表中,点击 在图上显示
。在这些情况下,所有使用或层次结构条目都会添加到图表中,并可视化使用/继承 依赖关系。
新创建的类型依赖图会显示在新的 编辑器选项卡中。
请注意,图表不会与解决方案同步,也就是说,如果您在代码中重命名或删除类型,图表不会发生变化。
调整图表视图
要平移图表,请在图表区域中图表项外的任意位置右键点击并拖动,同时显示手形光标
。 要缩放,请在按住
Ctrl
键的同时使用鼠标滚轮。
图表布局会自动计算,但如果需要,您可以更改:所有项目都可以移动。 要移动项目(类型、依赖链接或分组项目),首先点击以选择,然后在显示十字光标
时点击并拖动。
当大型图表缩小并且其元素变小时,按住 Alt 并将鼠标悬停在图表上以放大特定区域。
在图表上添加和移除项目
在任何时候,您都可以修改显示的图表,以便仅显示所需的类型。
要从图表中移除类型,请在选择项目时按 Delete 。 要进行多选,请 Ctrl -点击项目。
还有几种方法可以将项目添加到图表中:
将类型、文件夹和项目从 Solution Explorer 拖放到图表中。
要查找并添加所有引用的类型,请右键点击类型并选择 添加所有引用的类型。
要从 解决方案和引用的程序集 中按名称查找并添加类型,请按 Space 或右键点击图表中的任意位置并选择 ,然后在搜索字段中开始输入名称。 您可以在输入时使用 CamelHumps:

选择一个或多个类型并按 输入 或双击类型以将其添加到图表中。
研究特定类型和容器
您可以获取任何特定类型(以及类型之间的任何 依赖关系 )的详细信息。 要获取类型的详细信息,请将鼠标悬停在其上,并在详细信息弹出窗口出现后,将鼠标指针移到其上。
在类型详细信息弹出窗口中,您将看到给定类型使用了哪些类型、该类型的使用位置、继承的类型、构造函数参数中使用的类型等。
如果该类型有 XML 文档,摘要也会显示在弹出窗口中。
您可以点击相关类型以在编辑器中打开其声明。 要在编辑器中打开类型本身,请点击其名称旁边的 转到声明。

研究类型之间的依赖关系
在类型依赖图中,您可以可视化几种依赖关系。 要显示或隐藏特定类型的依赖关系,请使用图表工具栏上的相应按钮:
聚合依赖关系 — 当某种类型是其他类型的集合或容器时,显示一种依赖关系,
这种依赖关系显示为绿色虚线。 相应字段的名称显示在线条旁边。 您可以将鼠标悬停在此线条上以查看字段声明,并导航到编辑器中的相应位置。
使用依赖关系 — 当一种类型的变量、参数或方法返回值在另一种类型中被使用时,显示一种依赖关系。
这种依赖关系显示为蓝色线条,其粗细反映了相对的使用次数。 您可以将鼠标悬停在此线条上以查看使用列表:

点击特定的使用项将带您到文本编辑器中的相应位置,点击 显示所有用法 链接将在 查找 窗口中打开所有使用项。
继承依赖关系 — 当一种类型扩展或实现另一种类型时,显示一种依赖关系。 这种依赖关系显示为深绿色线条。 您可以将鼠标悬停在此线条上以查看继承关系,并导航到编辑器中的相应位置。
返回类型依赖关系 — 当一种类型具有返回另一种类型的方法或属性时,显示一种依赖关系。 这种依赖关系显示为紫色线条。 您可以将鼠标悬停在此线条上以查看成员列表。
构造函数注入 — 当一种类型作为另一种类型的构造函数参数公开时,显示一种依赖关系。 这种依赖关系显示为棕色线条。 您可以将鼠标悬停在此线条上以查看构造函数。
将图表导出到文件
在探索类型依赖关系的任何时候,您都可以点击工具栏上的 导出图表 ,并选择所需的导出选项之一,包括:
PNG、JPG 或 GIF 图像文件
SVG
YEd.graphml
JGraph.drawio
Graphviz.dot
带位置的 Graphviz.dot
Mermaid .md
PlantUML
IDEA .uml