在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支持参数类型(其他东西也可以参数化,类型以外的东西也可以用作参数)。