Использование атрибута Cref XML-комментария C # с синтаксисом params - PullRequest
15 голосов
/ 17 апреля 2009

В C # я пытаюсь использовать для ссылки на сигнатуру метода, содержащую ключевое слово params. Я знаю, что это преобразует список параметров в массив, но я даже не могу понять, как ссылаться на массив в атрибуте CREF. Я ничего не нахожу в своих поисках, и никто из тех, кого я знаю, тоже не имеет ни малейшего представления. Компилятор захлебывается квадратными скобками. Я пробовал все виды различных комбинаций, используя фигурные скобки, используя класс Array, но ничего не работает. Кто-нибудь знает это?

Ответы [ 3 ]

36 голосов
/ 06 мая 2009

В соответствии со статьей B.3.1 формат строки ссылка на массив выполняется с помощью [квадратных скобок] (с необязательными спецификаторами lowerbound:size), но если вы просто хотите сослаться на массив определенный тип (или даже массив объектов), вы не можете просто написать

<see cref="Object[]"/>

вместо этого вам нужно указать, что вы делаете ссылку на тип с префиксом T:, например

<see cref="T:Object[]"/>

Похоже, что это не относится к ссылкам на конкретную перегрузку метода, такую ​​как

<seealso cref="String.Join(String, String[])"/>

11 голосов
/ 17 апреля 2009

Стандарт ECMA 334 PDF, Приложение E, содержит подробный обзор комментариев к XML-документации. Вы можете скачать стандарт по адресу:

http://www.ecma -international.org / публикации / стандарты / ECMA-334.htm

В частности, вам понадобится раздел E.3.1, начиная со страницы 496.

Аналогичный контент также есть на MSDN (хотя MSDN, кажется, имеет ужасную навигацию по этой теме, что затрудняет поиск других разделов):

http://msdn.microsoft.com/en-us/library/aa664787(VS.71).aspx

Эквивалент E.3.1:

http://msdn.microsoft.com/en-us/library/aa664807(VS.71).aspx

Вы также можете найти документацию Mono полезной:

http://www.go-mono.com/docs/index.aspx?tlink=29@man%3amdoc (5)

В частности, в разделе «ФОРМАТ CREF» рассматриваются условные обозначения строки идентификатора.

Обновление 2018/05/23

URL-адрес PDF-файла стандарта ECMA-334, приведенный выше, ссылается на последнюю версию стандарта. В 2009 году это было 4-е издание стандарта. Однако по состоянию на декабрь 2017 года 5-е издание является действующим, и раздел E.3.1 из 4-го издания стал разделом D.4.2 в 5-м издании.

Предыдущие версии стандарта ECMA-334 доступны для загрузки со следующей страницы: https://www.ecma -international.org / публикации / стандарты / Ecma-334-arch.htm

5 голосов
/ 17 апреля 2009

Вы просто пропускаете ключевое слово param и вводите тип следующим образом:

/// <summary>
/// <see cref="Method(string[])"/>
/// </summary>
public static void Main()
{
    Method("String1", "String2");
}

public static void Method(params string[] values)
{
    foreach (string value in values)
    {
        Console.WriteLine(value);
    }
}
...