2010-05-25 11 views
15

मैं डब्ल्यूसीएफ सेवा में जेनेरिक तरीकों का उपयोग कैसे कर सकता हूं?डब्ल्यूसीएफ। सेवा जेनेरिक विधियां

मैं इस कोड लिखा है:

[OperationContract] 
void AddItem<T>(T item); 

लेकिन मैं निम्न त्रुटि प्राप्त:

Type 'T' cannot be exported as a schema type because it is an open generic type. You can only export a generic type if all its generic parameter types are actual types.

उत्तर

28

आप बस नहीं कर सकते। ऐसा करना संभव नहीं है, क्योंकि साबुन इसका समर्थन नहीं करता है। यह article देखें, जो कि मध्यवर्ती स्थानीय ऑब्जेक्ट बनाकर जेनिक्स के आसपास कैसे प्राप्त किया जाता है, जिसे डब्ल्यूसीएफ ऑपरेशन को कॉल करने से पहले ऑब्जेक्ट को बुलाया जाता है।

6

आपको ऐसा करने की कोशिश नहीं करनी चाहिए। एक एसओएपी सक्षम वेब सेवा में डब्ल्यूएसडीएल प्रकाशित होने पर सभी प्रकारों को जानना आवश्यक है ताकि ग्राहक प्रॉक्सी उत्पन्न करने में सक्षम होंगे। जेनिक्स बस एसओएपी विनिर्देश में मौजूद नहीं है। एसओएपी का उद्देश्य अंतःक्रियाशील होना है और जेनेरिक सभी भाषाओं में मौजूद नहीं है।

1

जैसा कि अन्य सभी पहले ही उल्लेख कर चुके हैं, डब्ल्यूसीएफ और एसओएपी इसका समर्थन नहीं करते हैं। मुद्दा यह है कि: क्लाइंट और सर्वर के बीच जो कुछ भी आप पास करते हैं वह एक एक्सएमएल स्कीमा दस्तावेज़ में स्पष्ट होना चाहिए।

एक्सएमएल स्कीमा स्ट्रिंग, int, डेटाटाइम जैसे सभी सामान्य परमाणु प्रकारों का समर्थन करता है - और यह उन परमाणु प्रकारों से बने जटिल प्रकारों का समर्थन करता है, और यह विरासत का समर्थन करता है।

लेकिन एक्सएमएल स्कीमा के जेनेरिक के लिए कोई समर्थन नहीं है - और इस प्रकार, डब्ल्यूसीएफ और एसओएपी के माध्यम से आप जो कुछ भी एक्सचेंज करते हैं, वह सामान्य नहीं हो सकता है - आपको केवल ठोस, गैर-जेनेरिक प्रकारों का उपयोग करने की आवश्यकता है।

मुझे इसके आसपास किसी भी तरह से पता नहीं है, या तो। यह एक सीमा है और अब आप इसके साथ रहना है।

0

त्रुटि कहती है कि खुले प्रकार की अनुमति नहीं है।

[OperationContract] 
void AddItem<T>(T item) where T : MyBaseType; 

बेशक, सब विरासत में मिला प्रकार KnownType विशेषता के साथ जोड़ा जाना चाहिए: क्या शायद अनुमति दी है की तरह कुछ है।

+2

परीक्षण मैं सिर्फ किया है कि काम करने के लिए प्रकट नहीं होता है से दुर्भाग्य से। यह अभी भी एक खुला जेनेरिक प्रकार होने के बारे में शिकायत करता है। – Sam

1

डेटा ठेके में घिरा सामान्य प्रकार के लिए इस्तेमाल किया जा सकता है, लेकिन सेवा अनुबंध में प्रकार पैरामीटर द्वारा निर्दिष्ट किया जाना चाहिए और मान्य डेटा के साथ निर्दिष्ट प्रकार पैरामीटर के रूप में अनुबंध

संबंधित मुद्दे