我有以下界面:
public interface IRegisterable
{
T Register<T>(string username, string passw) where T : User, ICanLogin, new();
}
User
是一个抽象类,ICanLogin
是另一个接口。
现在,我想在 Visio 中的 UML 类图中用其方法表示上述接口。
如何在类图中表示上述通用方法及其约束?
我有以下界面:
public interface IRegisterable
{
T Register<T>(string username, string passw) where T : User, ICanLogin, new();
}
User
是一个抽象类,ICanLogin
是另一个接口。
现在,我想在 Visio 中的 UML 类图中用其方法表示上述接口。
如何在类图中表示上述通用方法及其约束?
泛型类是 UML 中的模板类,请参阅用 UML 表示模板类的正确方法是什么?
所以你不能在 Visio 中使用你的参数化类http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Parameterized+Class/
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
UML确实支持参数类型(其他东西也可以被参数化,除了类型之外的东西也可以用作参数)。