如何将List <MyCustomType>指定为UML接口属性的"返回类型"

Jed*_*Jed 20 visio generic-list user-defined-types

在我的Visio 2007 UML文档中,我无法弄清楚如何向返回泛型List<MyCustomType>类型的接口添加操作.

例如:

假设我有一个名为"MyClass"的类和一个名为"IFace"的接口.IFace有一个返回MyClass通用列表的方法的签名.

为清楚起见,这是C#代码的示例:

namespace StackO
{
    public interface IFace
    {
        List<MyClass> SomeMethod(string data);    
    }

    public class MyClass
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我卡住的截图: 在此输入图像描述

似乎将指定a List<MyClass>作为我的返回类型的唯一方法是创建另一个显式写为的用户定义数据类型List<MyClass>.如果是这种情况,那就这样吧.但是,我发布这篇文章是希望有更好/正确的方法来做到这一点.

如何将Visio接口操作的返回类型定义为用户定义数据类型的通用列表?

Bra*_*ild 17

在类图属性>转到操作>中,选择您想要更改的返回类型,然后单击属性.

在下一个对话框中,您可以选择设置前缀List<和后缀>.

这样您就可以将返回类型指定为List<>.

我在Visio 2010中看到此选项.但我不确定此选项是否在Visio 2007中可用.


Ars*_*nko 12

T1<T2>在UML类图中没有这样的东西.

如果要指定该方法返回多个值,则正确的表示法是:

SomeMethod(data: String) : MyClass [*]
Run Code Online (Sandbox Code Playgroud)

这种表示法比C#使用的表示法强大得多.List<MyClass> SomeMethod(string data)没有提供有关方法合同的信息.使用UML,您知道:

SomeMethod(data: String) : MyClass [*]
SomethingElse() : String [1..*]
LastExample(number: UnlimitedNatural) : Integer [0..1]
Run Code Online (Sandbox Code Playgroud)

SomeMethod返回包含零个或多个元素的序列.SomethingElse返回一个或多个元素的序列:此序列永远不会为空.最后,LastExample返回一个可选值.这可以用C#表示int? LastExample(uint number)- 见,不,IEnumerable这里.

另请注意:

SomeMethod(data: String) : MyClass [0..*]
Run Code Online (Sandbox Code Playgroud)

不应该使用,因为[*]意思相同而且更短.至于:

SomeMethod(data: String) : MyClass [0..n]
Run Code Online (Sandbox Code Playgroud)

虽然在互联网上被大量使用,但是不正确.

  • 虽然从学术角度来看你的答案是正确的,但使用`List <MyCustomType>`作为返回类型的预期语义非常清楚,那么为什么不允许一个实用的解决方案呢?只是因为Viso不支持它?(接受的答案确实是一个非常丑陋的黑客,我当然会避免它). (2认同)
  • 感谢您发布此内容。我一直在寻找正确的方法来记录返回集合的操作,而不会过于特定于语言。 (2认同)