PlantUmlClassDiagramGenerator 1.3.0

我们已经发布了从 C# 源代码生成 PlantUML 类图的工具的 1.3.0 版!
从这个版本开始,您可以通过将属性附加到生成源的源代码来灵活控制输出内容。

VS 代码扩展

也可作为 Visual Studio Code 的扩展!

使用属性添加自定义

这个库本来有一个从属性和字段中自动生成类之间关系的功能,但是由于不能很好的控制,所以对用户不是很友好。

因此,通过给类、属性、方法参数等添加属性,我们在一定程度上使得控制输出到类图成为可能。

要使用此功能,您需要安装一个 NuGet 包,该包定义了目标 C# 项目的各种属性。
https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes

目前,定义了以下属性。

  • PlantUmlAssociation 属性
    您可以指定类之间关联的详细信息
  • PlantUmlDiagram 属性
    仅输出具有此属性的类型(类、结构等)。仅对命令行选项 -attributeRequired 有效。
  • PlantUmlIgnoreAttribute
    不会输出具有此属性的元素。
  • PlantUmlIgnoreAssociationAttribute
    当附加到属性或字段时,它将作为类的成员输出,而不是作为类之间的关联。

PlantUmlAssociationAttribute

通过添加此属性,您可以详细指定类之间的关联。
还可以指定关系的类型(组合、聚合、依赖等)并添加多重性。

using PlantUmlClassDiagramGenerator.Attributes;
class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}
    
class ClassA
{
    [PlantUmlAssociation(Association = "--", RootLabel = "RootLabel" Label = "Label", LeafLabel = "LeafLabel")]
    public Item Prop { get; set; }
}

class ClassB
{
    [PlantUmlAssociation(Name = "User", Association = "o-->", RootLabel = "1", Label = "IList<User>", LeafLabel = "0..1")]
    public IList<User> Users { get; set; }
}

根据属性值的指定添加关联。

@startuml
class User {
    + Name : string <<get>> <<set>>
    + Age : int <<get>> <<set>>
}
class ClassA {
}
class ClassB {
}
ClassA "RootLabel" -- "LeafLabel" Item : "Label"
ClassB "1" o--> "0..1" User : "IList<User> : Users"
@enduml

C#のソースコードからPlantUMLのクラス図を生成するツール PlantUmlClassDiagramGenerator 1.3.0 をリリースしました!

在不能使用属性之前,输出结果如下图,不能很好的表达集合关系。

@startuml
class User {
    + Name : string <<get>> <<set>>
    + Age : int <<get>> <<set>>
}
class ClassA {
}
class ClassB {
}
class "IList`1"<T> {
}
ClassA --> "Prop" Item
ClassB --> "Users<User>" "IList`1"
@enduml

C#のソースコードからPlantUMLのクラス図を生成するツール PlantUmlClassDiagramGenerator 1.3.0 をリリースしました!

该属性也可以赋予方法参数。

class ClassA
{
   private ILogger logger;
   public ClassA([PlantUmlAssociation(Association = "-->", Label = "Injection")] ILogger logger)
   {
        this.logger = logger;
   }
}
@startuml
class ClassA {
    + ClassA(logger:ILogger)
}
ClassA --> ILogger : "Injection"
@enduml

C#のソースコードからPlantUMLのクラス図を生成するツール PlantUmlClassDiagramGenerator 1.3.0 をリリースしました!

我认为这允许更灵活的表达方式。

PlantUmlDiagramAttribute

当您希望在具有许多类的大型项目中仅输出必要的类图时,此属性很有用。
它与新添加的命令行选项-attributeRequired 结合使用。

[PlantUmlDiagram]
interface IInterfaceA 
{
    void MethodA();
}

class ClassA
{
    public string PropA { get; set; }
}

[PlantUmlDiagram]
class ClassB : IInterfaceA
{
    public string PropA { get; set; }
    public void MethodA();
}


struct StructA
{
    public string PropA { get; set; }
}

使用-attributeRequired 选项运行时,仅输出标有PlantUmlDiagramAttribute 的类和接口。

@startuml
interface IInterfaceA {
    MethodA() : void
}
class ClassB {
    + PropA : string <<get>> <<set>>
    + MethodA() : void
}
IInterfaceA <|-- ClassB
@enduml

C#のソースコードからPlantUMLのクラス図を生成するツール PlantUmlClassDiagramGenerator 1.3.0 をリリースしました!

PlantUmlIgnoreAttribute

将此属性添加到您不想输出的元素。
可以为每个类型、属性、字段、方法添加它,例如类接口。

[PlantUmlIgnore]
class ClassA
{
    public string PropA { get; set; }
    public void MethodA();
}

class ClassB
{
    [PlantUmlIgnore]
    public string PropA { get; set; }
    public string PropB { get; set; }
    [PlantUmlIgnore]
    public void MethodA();    
    public void MethodB();
}
@startuml
class ClassB {
    + PropB : string <<get>> <<set>>
    + MethodB() : void
}
@enduml

C#のソースコードからPlantUMLのクラス図を生成するツール PlantUmlClassDiagramGenerator 1.3.0 をリリースしました!

PlantUmlIgnoreAssociationAttribute

当启用命令行选项-createAssociation 时,属性和字段定义被推出类图并作为类之间的关联输出。
现在将在类中将具有此属性的属性或字段描述为成员而不是关联。

class Item
{
}

class ClassA
{
    public Item PropA { get; set; }
    public Item PropB { get; set; }
}

class ClassB
{
    [PlantUmlIgnoreAssociation]
    public Item PropA { get; set; }
    [PlantUmlIgnoreAssociation]
    public Item PropB { get; set; }
}
@startuml
class Item {
}
class ClassA {
}
class ClassB {
    + PropA : Item <<get>> <<set>>
    + PropB : Item <<get>> <<set>>
}
ClassA --> "PropA" Item
ClassA --> "PropB" Item
@enduml

C#のソースコードからPlantUMLのクラス図を生成するツール PlantUmlClassDiagramGenerator 1.3.0 をリリースしました!

综上所述

我们计划花更多时间来复习这次添加的基于属性的自定义功能。
如果您有兴趣看到这篇文章,请尝试使用一次!
此外,我们很乐意收到您的意见和要求。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308632904.html

相关文章: