2011-12-06 14 views
6

tengo clase de excepción genérica como esto:construida tipo genérico en parte CREF de xml-comentario

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

Y tengo método no genérico capaz de sembrar construida excepción genérica:

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

Este El método puede arrojar esta excepción genérica pero solo de este construido tipo DuplicateException<SomeEntity> y no puede lanzar esta excepción con algún otro parámetro de tipo en lugar de SomeEntity.

Ahora quiero especificar este hecho en xml-comment para el método Save. This article describe un poco cómo hacer comentarios métodos con excepción genérica y he tratado de estas dos alternativas:

1) inserta por defauly por autocompletar en VS:

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

2) Sustituido TEntity con SomeEntity

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

pero en ambos casos la salida XML todavía afirma que este método puede lanzar genérica no construida tipo que no menciona SomeEntity en absoluto:

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

¿Es necesario lanzar una excepción genérica? El único uso de eso sería si un fragmento de código en particular podría lanzar DuplicateException y DuplicateException , y solo desea capturar una pero no la otra. –

+0

Bien, pero ¿por qué no tener solo una DuplicateException que podría arrojarse desde cualquier método Save *? ¿Por qué necesita ser genérico? –

+0

Ser fuertemente tipado realmente no te da mucho. Sí, puede tener una propiedad fuertemente tipada con el objeto que se estaba guardando. Pero, ¿qué vas a hacer con esa propiedad fuertemente tipada? Creo que estarás mejor con una excepción no genérica aquí. –

Respuesta

3

El propósito del atributo CREF es vincular a la documentación de un tipo. Pero no hay documentación para tipos genéricos concretos, por lo que no es sorprendente que el atributo cref generado sea para la definición de tipo genérico. Su preocupación es que desea mostrar algo diferente a lo que está en el enlace. Puede hacerlo al usar el elemento, porque el contenido del elemento es el texto del enlace. Pero en el elemento, el contenido del elemento es la descripción de cuándo ocurre la excepción. Entonces, no creo que haya una manera de hacer lo que estás buscando.

Cuestiones relacionadas