созданный универсальный тип в части cref xml-комментария - PullRequest
6 голосов
/ 06 декабря 2011

У меня есть общий класс исключений, подобный этому:

public class DuplicateException<TEntity> : Exception
{
    public TEntity Entity { get; set; }
}

И у меня есть неуниверсальный метод, который может генерировать сгенерированное универсальное исключение:

void Save()
{
    throw new DuplicateException<SomeEntity>();
}

Этот метод может генерировать это универсальное исключение, но только этого сконструированного типа DuplicateException<SomeEntity>, и он не может генерировать это исключение с каким-либо другим параметром типа вместо SomeEntity.

Теперь я хочу указать этот факт в xml-комментарии для метода Save. Эта статья описывает немного, как комментировать методы с общим исключением, и я попробовал эти две альтернативы:

1) Вставляет по умолчанию с помощью автозаполнения в VS:

/// <exception cref="DuplicateException{TEntity}" />

2) Заменено TEntity на SomeEntity

/// <exception cref="DuplicateException{SomeEntity}" />

Но в обоих случаях выходной XML по-прежнему утверждает, что этот метод может генерировать общий не сконструированный тип, который вообще не упоминает SomeEntity:

<exception cref="T:MyNameSpace.DuplicateException`1" />

1 Ответ

3 голосов
/ 01 апреля 2012

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

...