2011-12-06 14 views
6

मैं इस तरह सामान्य अपवाद वर्ग है:एक्सएमएल-टिप्पणी की cref भाग में निर्माण सामान्य प्रकार

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

और मैं गैर सामान्य विधि है जो सामान्य अपवाद निर्माण फेंक सकती है:

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

यह विधि इस सामान्य अपवाद को फेंक सकती है लेकिन केवल एक निर्मित प्रकार DuplicateException<SomeEntity> और यह SomeEntity के बजाय इस अपवाद को किसी अन्य प्रकार पैरामीटर के साथ नहीं फेंक सकता है।

अब मैं Save विधि के लिए xml-comment में इस तथ्य को निर्दिष्ट करना चाहता हूं। This article एक छोटा सा सामान्य अपवाद के साथ तरीकों टिप्पणी करने के लिए कैसे का वर्णन करता है और मैं इन दो विकल्पों की कोशिश की है: defauly द्वारा

1) आवेषण स्वत: पूर्ण द्वारा वी.एस. में:

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

2) TEntity बदला साथ SomeEntity

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

लेकिन दोनों ही मामलों उत्पादन एक्सएमएल में अभी भी कहा गया है कि इस विधि सामान्य गैर निर्माण प्रकार है जो +०१२३१०४५०९ का उल्लेख नहीं है फेंक सकती हैबिल्कुल:

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

क्या एक सामान्य अपवाद फेंकना आवश्यक है? इसका एकमात्र उपयोग यह होगा कि यदि कोई विशेष कोड खंड संभावित रूप से डुप्लिकेट एक्सेप्शन और डुप्लिकेट एक्सेप्शन फेंक सकता है, और आप केवल एक को पकड़ना चाहते हैं, लेकिन दूसरे को नहीं। –

+0

ठीक है, लेकिन क्यों न केवल एक डुप्लिकेट एक्सेप्शन है जिसे किसी भी सहेजें * विधि से फेंक दिया जा सकता है? इसे सामान्य होने की आवश्यकता क्यों है? –

+0

दृढ़ता से टाइप किया जा रहा है वास्तव में आपको बहुत कुछ नहीं मिलता है। हां, आपके पास सहेजे जा रहे ऑब्जेक्ट के साथ दृढ़ता से टाइप की गई संपत्ति हो सकती है। लेकिन आप उस दृढ़ता से टाइप की गई संपत्ति के साथ क्या करने जा रहे हैं? मुझे लगता है कि आप यहां एक गैर-सामान्य अपवाद के साथ बेहतर होने जा रहे हैं। –

उत्तर

3

cref विशेषता के प्रयोजन के एक प्रकार के लिए प्रलेखन से जोड़ने के लिए है। लेकिन कंक्रीट जेनेरिक प्रकारों के लिए कोई दस्तावेज नहीं है, इसलिए यह आश्चर्य की बात नहीं है कि उत्पन्न क्रेफ विशेषता सामान्य प्रकार की परिभाषा के लिए है। आपकी चिंता यह है कि आप लिंक में क्या कुछ अलग दिखाना चाहते हैं। तत्व का उपयोग करते समय आप ऐसा कर सकते हैं, क्योंकि तत्व की सामग्री लिंक का पाठ है। लेकिन तत्व में, तत्व की सामग्री अपवाद होने पर विवरण है। तो मुझे नहीं लगता कि आप जो भी खोज रहे हैं उसे करने का एक तरीका है।