2009-03-26 20 views
38

एक अनुमानित सहायक वर्ग के लिए कुछ XML दस्तावेज़ लिखना। लेकिन मुझे पता नहीं लगा सकता कि मैं एक वाक्यविन्यास त्रुटि प्राप्त किए बिना Expression<Func<T, bool>> का संदर्भ ले सकता हूं। क्या यह भी संभव है? मैं इस की कोशिश की है:सी # एक्सएमएल दस्तावेज में एक सामान्य प्रकार के सामान्य प्रकार का जिक्र करते हुए?

<see cref="Expression{Func{T, bool}}"/> 

लेकिन मैं {T, bool}} के तहत एक लाल टेढ़ी-मेढ़ी रेखा मिलता है। यह हालांकि काम करता है:

<see cref="Expression{TDelegate}"/> 

किसी के पास कोई सुराग है?


अद्यतन:

जवाब यह है कि दिया गया था (और मैं स्वीकार किए जाते हैं) प्रतीत होता है काम किया है। लेकिन अब मुझे हल करने में सक्षम नहीं होने वाली चीजों के बारे में बहुत सारी चेतावनियां मिलनी शुरू हो गई हैं। मेरे पास ExpressionBuilder<T> नामक एक कक्षा है जो Expression<Func<T, bool>> के साथ काम करती है। तो मैं निश्चित रूप से मेरी एक्सएमएल टिप्पणियों में उल्लेख करना चाहता हूं।

<see cref="Expression&lt;Func&lt;T, Boolean&gt;&gt;"/> 
<see cref="Expression{Func{T, Boolean}}"/> 

लेकिन न तो काम:

मैं दोनों संस्करणों है कि मैं के बारे में पता करने की कोशिश की है। (और पिछले एक पर, ReSharper एक नीले रंग की टेढ़ी-मेढ़ी तहत {T,Boolean}} मैं संकलन के तहत दो चेतावनी मिल डालता है हर जगह मैं इसे इस्तेमाल किया है जो कहता है कि:

  1. ', ऐसा' पर एक्सएमएल टिप्पणी विशेषता 'अभिव्यक्ति cref है> 'है कि हल नहीं किया जा सकता है
  2. प्रकार पैरामीटर घोषणा एक पहचानकर्ता एक प्रकार नहीं होना चाहिए। यह भी देखें त्रुटि CS0081।

कहीं मैं Range<Nullable<DateTime>> का उल्लेख करने की कोशिश की एक ही मुद्दा है (Range<DateTime?> या तो काम नहीं किया। {} और &lt; &gt; के साथ दोनों)

क्या मुझे इन प्रकार के जेनेरिकों का उल्लेख नहीं करना चाहिए?

+2

मैं एक ही प्रश्न पूछने वाला था। इसे ढूंढने में मुझे कुछ समय लगा क्योंकि शीर्षक बहुत कीवर्ड नहीं है-y। क्या मैं सुझाव दे सकता हूं, "मैं सी # एक्सएमएल दस्तावेज में जेनेरिक प्रकार के जेनेरिक प्रकार का कैसे उपयोग करूं?" आप "जेनेरिक" टैग भी जोड़ सकते हैं। मेरे पास ऐसा करने का प्रतिनिधि नहीं है। –

+0

किया गया =) – Svish

+0

<देखें cref = "अभिव्यक्ति {Func {T, Boolean}}" /> VS2015 में ठीक काम करता है, Reshaper 9 – Alex

उत्तर

37

एक्सएमएल दस्तावेज में जेनेरिक के जेनेरिक को संदर्भित करने का कोई तरीका नहीं है, क्योंकि वास्तव में, किसी विशिष्ट प्रकार के जेनेरिक को संदर्भित करने का कोई तरीका नहीं है।

आप <see cref="IEnumerable{Int32}" /> लिखते हैं, संकलक बस "Int32" प्रकार पैरामीटर नाम, नहीं प्रकार तर्क के रूप में उपयोग करता है:

लासे वी Karlsen के answer यह मेरे लिए क्लिक बना दिया। लेखन <see cref="IEnumerable{HelloWorld}" /> भी काम करेगा। यह समझ में आता है क्योंकि एमएसडीएन में "इंट्यूमेरेबल ऑफ इंट" के लिए कोई विशिष्ट पृष्ठ नहीं है जो आपके दस्तावेज़ से लिंक हो सकता है।

अपने वर्ग के दस्तावेज करने के लिए ठीक से, मुझे लगता है कि आप की तरह कुछ लिखने के लिए होगा:

<summary> 
Returns an <see cref="IEnumerable{T}" /> of <see cref="KeyValuePair{T,U}" /> 
of <see cref="String" />, <see cref="Int32" />. 
</summary> 

मैं आप पाठ की तरह उम्मीद है।

+4

नहीं, मुझे टेक्स्ट से नफरत है, इसलिए मैंने इस सवाल से पूछा। ओह ठीक है ... शायद एक्सएमएल-डॉक्टर के भविष्य के संस्करण में: पी – Svish

3
// Use "&lt;" instead of "<" symbol and "&gt;" instead of ">" symbol. 

// Sample: 

<see cref="Expression&lt;Func&lt;T, bool&gt;&gt;"/> 
+0

ओह मेरी ... वह बदसूरत है ... लेकिन यह काम करता है =/यह एक प्रकार के लिए {} क्यों स्वीकार करता है लेकिन अधिक नहीं, किस प्रकार? – Svish

+0

क्या आप इस बारे में निश्चित हैं? –

+1

क्या बारे में निश्चित है? जैसे मैंने कहा, 'अभिव्यक्ति {TDelegate}' या उदाहरण के लिए 'सूची {स्ट्रिंग}' का उपयोग करते समय मुझे कोई लाल squiggly लाइन नहीं मिलती है। असल में, जब मैं लिखता हूं <देखें और एंटर दबाएं, तो यह स्वतः को पूरा करता है। जब मैं सूची लिखता हूं और एंटर दबाता हूं, तो यह सूची {T} पर स्वत: पूर्ण होता है। – Svish

12

आप इसे किस लिंक से जोड़ना चाहते हैं?

प्रलेखन में Expression<Func<T>> के रूप में ऐसी कोई चीज़ नहीं है, तो जाहिर है कि इसका एक लिंक काम नहीं करेगा।

आप Expression<TDelegate> से लिंक कर सकते हैं क्योंकि यह मौजूद है।

क्या काम करता है या नहीं, न तो दृश्य स्टूडियो में निम्नलिखित कार्यों के लिए के रूप में 2008/.NET 3.5 मेरे लिए:

/// <see cref="Expression&lt;Func&lt;T&gt;&gt;"/>. 
/// <see cref="Expression{Func{T}}"/>. 

लेकिन यह काम करता है:

/// <see cref="Expression{T}"/>. 
तो जाहिरा तौर पर

सामान्य प्रकार पैरामीटर की घोषणा में एक जैसा नहीं है।

+0

तो एक सामान्य प्रकार के साथ एक सामान्य प्रकार के प्रति refering का कोई तरीका नहीं है तर्क? जैसे कि मेरे पास एक ऐसा फ़ंक्शन था जो एक सूची > लौटाता है, तो मैं केवल यह कहने में सक्षम हूं कि यह एक सूची लौटा दी है? – Svish

+0

या एक सूची .. जो ऐसा लगता है जैसे काम करना चाहिए ... – Svish

+2

ऐसा इसलिए है क्योंकि "स्ट्रिंग" का उपयोग सामान्य प्रकार के नाम के रूप में किया जाता है। सूची आज़माएं और यह उतना ही अच्छा काम करेगा। –

0

मैं अब इसमें भाग रहा हूं, क्योंकि मेरे पास एक ऐसा फ़ंक्शन है जो List<List<byte>> देता है। हाँ, यह बदसूरत है, लेकिन मैंने इसे नहीं लिखा था। मानक अस्वीकरण, मुझे पता है।

वैसे भी, वी.एस. 2017 आर # परम 2017.1, इस दस्तावेज़ के टिप्पणी के साथ ...

में
<returns><see cref="List{List{Byte}}" /> of split frames</returns> 

... मेरे एक सिंटैक्स त्रुटि देता है। बहरहाल, यह ...

<returns><see><cref>List{List{byte}}</cref></see> of split frames</returns>

... नहीं करता है। Eeenteresting

अभी भी बदसूरत? हाँ।

बदसूरत के रूप में? मुझे लगता है कि यह &lt; और &gt; का उपयोग करने से कम भयानक है ....

0

खाली दृश्य तत्व (<see cref="..." />) का उपयोग न करें। इसके बजाए, देखें तत्व

<see cref="IEnumerable{T}">IEnumerable</see>&lt;<see cref="..."/>$gt; 
संबंधित मुद्दे