Генерик-методы и 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;
}