如何在Mermaid类图的关系中引用命名空间?
Mermaid类图:使用命名空间语法时如何区分同名类的继承关系
我原本用以下写法实现了正确的类图:
classDiagram class base.A class derived1.T class derived2.T base.A <|-- derived1.T : inherits from base.A <|-- derived2.T : inherits from
这个写法能正确渲染出base.A分别作为derived1.T和derived2.T父类的类图。
但我想改用Mermaid官方的namespace语法,于是尝试了以下代码:
classDiagram namespace base { class A } namespace derived1 { class T } namespace derived2 { class T } A <|-- T : inherits from A <|-- T : inherits from
显然这个写法有问题——因为两个命名空间里都有T类,Mermaid无法区分,渲染出的结果不符合预期。
我试过在关系里写base.A <|-- derived1.T和base.A <|-- derived2.T,但也没得到正确效果。请问在Mermaid类图的关系中,是否可以通过命名空间来区分同名类?
解决方案
在Mermaid类图中,使用命名空间后,必须在关系中用完整的命名空间.类名格式引用类,才能正确区分不同命名空间下的同名类。正确的代码如下:
classDiagram namespace base { class A } namespace derived1 { class T } namespace derived2 { class T } base.A <|-- derived1.T : inherits from base.A <|-- derived2.T : inherits from
这样就能正确渲染出base.A分别作为derived1.T和derived2.T父类的类图,和最初的写法效果一致。
需要注意的是,关系定义中的类不能只写类名,必须带上所属的命名空间前缀,否则Mermaid会默认关联到最后定义的同名类,导致关系错误。
内容的提问来源于stack exchange,提问作者jamiet
相关产品推荐
相关产品推荐

