Формат описания и примеры использования генерик-методов

Генерик-методы и UML

В связи с тем что UML не описывает создание генерик-методов, но в это же время хотелось бы иметь возможность их автоматической генерации было добавлено расширение, позволяющее описывать такие методы при описании классов на диаграммах.

Формат описания

Для описания генерик-методов на диаграммах классов предлагается следующий формат:

ИмяФункции<Шаблон1:Класс1,Интерфейс1;Шаблон2:Класс2;Шаблон3>(Параметр1:ТипПараметра1, Параметр2:ТипПараметра2):ТипФункции

При этом часть в треугольных скобках, включая их самих, является необязательной и при ее отсутствии будет сгенерирован обычный метод.

Шаблон1 и Шаблон2 будут сгенерированы в имена универсальных типов в генерик методе. После каждого имени шаблона, через двоеточие могут быть описаны ограничения на этот шаблон, которые сгенерируются в часть Where прототипа метода. Шаблоны разделяются точкой с запятой.

Примеры

Пример 1

Описание:

Добавить <T:DataObject>(dataObject:T)

Реализация:

public virtual void Добавить<T>(T dataObject)
where T : DataObject
{
    return;
}

Пример 2

_Описание:+

Добавить <U;T:DataObect;I:IComparable,ICloneable>(dataObject:T)

Реализация:

public virtual void Карамба<U,T,I>(T dataObject)
where T : DataObject
where I : IComparable, ICloneable
{
    return;
}