在UML类图中表示C#通用方法
我有以下界面:
public interface IRegisterable { T Register(string username, string passw) where T : User, ICanLogin, new(); }
User
是一个抽象类, ICanLogin
是另一个接口。
现在,我想在Visio中的UML类图中用它的方法表示上面的接口。
如何在类图中用约束表示上面的generics方法?
UML不直接支持类型参数方法。
关于你最接近的是定义一个嵌套类,它具有一个带有构造型的类型约束,你将它解释为它是一个类型参数,并根据它定义Register
操作。
+---------------------------------------------------+ | «interface» | | IRegisterable | +---------------------------------------------------+ | + Register (string username, string passw) : T | +---------------------------------------------------+ +---------------+ +---------------+ | «abstract» | | «interface» | | User | | ICanLogin | +---------------+ +---------------+ . . /_\ /_\ | . +-----------+ ............. | . +-------------------+ | «typeParameter» | | IRegisterable::T | +-------------------+ | + new() | +-------------------+ note: T is a nested class within IRegisterable
generics类是UML中的Template类,请参阅使用UML表示模板类的正确方法是什么?
所以你不能在Visio中使用thye参数化类http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Parameterized+Class/
UML DOES支持参数类型(其他东西也可以参数化,类型以外的东西也可以用作参数)。