Как указать List <MyCustomType>в качестве «Типа возврата» для свойства интерфейса UML - PullRequest
20 голосов
/ 05 января 2012

В моем документе Visio 2007 UML я не могу понять, как я могу добавить операцию в интерфейс, который возвращает общий тип List<MyCustomType>.

Например:

Скажите, яиметь класс с именем «MyClass» и интерфейс с именем «IFace».IFace имеет сигнатуру метода, который возвращает общий список MyClass.

Для ясности, вот пример кода C #:

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

    public class MyClass
    {
    }
}

Вот скриншот того, где я застрял: enter image description here

Кажется, что единственный способ указать List<MyClass> в качестве моего Типа возврата - это создать другой определяемый пользователем тип данных, который явно записан как List<MyClass>.Если это так, пусть будет так.Тем не менее, я публикую это в надежде, что есть лучший / правильный способ сделать это.

Как определить тип возврата операции интерфейса Visio как общий список пользователей?Определенный тип данных?

Ответы [ 2 ]

17 голосов
/ 07 января 2012

В свойствах диаграммы классов> Перейти к операциям> выберите тип возвращаемого значения, которое вы хотите изменить, и щелкните свойства.

В следующем диалоговом окне у вас будет опция для установки префикса List< и суффикса >.

Таким образом, вы можете указать тип возврата как List<>.

Я вижу эту опцию в Visio 2010. Но я не уверен, доступна ли эта опция в Visio 2007.

12 голосов
/ 17 августа 2013

В диаграммах классов UML нет такой вещи, как T1<T2> .

Если вы хотите указать, что метод возвращает несколько значений, правильная запись:

SomeMethod(data: String) : MyClass [*]

Эта нотация намного мощнее, чем в C #.List<MyClass> SomeMethod(string data) не дает информации о договоре метода.С UML вы знаете, что в:

SomeMethod(data: String) : MyClass [*]
SomethingElse() : String [1..*]
LastExample(number: UnlimitedNatural) : Integer [0..1]

SomeMethod возвращает последовательность, содержащую ноль или более элементов.SomethingElse возвращает последовательность из одного или нескольких элементов: эта последовательность никогда не бывает пустой.Наконец, LastExample возвращает необязательное значение.Это может быть выражено в C # как int? LastExample(uint number) - см. Здесь нет IEnumerable.

Также обратите внимание, что:

SomeMethod(data: String) : MyClass [0..*]

не следует использовать, поскольку [*] означаеттоже самое и короче.Что касается:

SomeMethod(data: String) : MyClass [0..n]

неверно, несмотря на то, что его часто используют в Интернете.

...