2011-12-06 5 views
6

ho classe di eccezione generica come questa:tipo generico costruito in parte CREF di xml-commento

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

E devo metodo non generico che potrebbe gettare costruito eccezione generica:

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

Questo il metodo può lanciare questa eccezione generica ma solo di questo tipo costruito DuplicateException<SomeEntity> e non può lanciare questa eccezione con qualche altro parametro di tipo invece di SomeEntity.

Ora voglio specificare questo fatto in xml-comment per il metodo Save. This article descrive un po 'come commentare metodi con eccezione generico e ho provato queste due alternative:

1) Inserti per defauly dal completamento automatico in VS:

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

2) Sostituito TEntity con SomeEntity

Ma in entrambi i casi l'output XML afferma ancora che questo metodo potrebbe generare il tipo non non costruito che non menziona SomeEntity affatto:

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

È necessario generare un'eccezione generica? L'unico uso sarebbe se un particolare frammento di codice potrebbe potenzialmente lanciare DuplicateException e DuplicateException e si desidera catturarne solo uno, ma non l'altro. –

+0

Ok, ma perché non avere una sola DuplicateException che potrebbe essere generata da qualsiasi metodo di salvataggio *? Perché ha bisogno di essere generico? –

+0

Essere fortemente digitato non ti dà davvero molto. Sì, puoi avere una proprietà fortemente tipizzata con l'oggetto che è stato salvato. Ma cosa hai intenzione di fare con quella proprietà fortemente tipizzata? Penso che starai meglio con un'eccezione non generica qui. –

risposta

3

Lo scopo dell'attributo CREF è quello di collegare alla documentazione per un tipo. Ma non c'è documentazione per tipi generici concreti, quindi non sorprende che l'attributo cref generato sia per la definizione di tipo generico. La tua preoccupazione è che vuoi mostrare qualcosa di diverso che cosa c'è nel link. Puoi farlo quando usi l'elemento, perché il contenuto dell'elemento è il testo del collegamento. Ma nell'elemento, il contenuto dell'elemento è la descrizione di quando si verifica l'eccezione. Quindi non penso che ci sia un modo per fare ciò che stai cercando.