在UML类图中表示C#通用方法

时间:2010-01-17 10:58:29

标签: c# uml generics visio class-diagram

我有以下界面:

public interface IRegisterable
{
   T Register<T>(string username, string passw) where T : User, ICanLogin, new();
}

User是一个抽象类,ICanLogin是另一个接口。

现在,我想在Visio的UML类图中用它的方法表示上面的接口。

如何在类图中用约束表示上面的泛型方法?

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:3)

UML不直接支持类型参数化方法。

关于你最接近的是定义一个嵌套类,它具有一个带有构造型的类型约束,你将其解释为它是一个类型参数,并根据它定义Register操作。 / p>

+---------------------------------------------------+
|                   «interface»                     |
|                  IRegisterable                    |
+---------------------------------------------------+
| + Register (string username, string passw) : T    |
+---------------------------------------------------+

    +---------------+           +---------------+
    |  «abstract»   |           |  «interface»  |
    |     User      |           |   ICanLogin   |
    +---------------+           +---------------+
            .                           .
           /_\                         /_\
            |                           .
            +-----------+   .............
                        |   .
                +-------------------+              
                |  «typeParameter»  |
                | IRegisterable::T  |
                +-------------------+           
                | + new()           |
                +-------------------+           

    note: T is a nested class within IRegisterable

答案 2 :(得分:1)

UML DOES 支持参数类型(其他东西也可以参数化,类型以外的东西也可以用作参数)。