2012-05-08 18 views
8

से अधिक को क्रमानुसार जेनेरिक प्रकार मैं एक सी # वर्ग इस प्रकार परिभाषित किया गया है:WCF सेवा

public class GenericItem<T> 
{ 
    public List<T> Items { get; set; } 

    public DateTime TimeStamp { get; set; } 
} 

मैं अपने सर्वर पर इस वर्ग का उदाहरण बनाकर कर रहा हूँ।

[OperationContract] 
public GenericItem<MyCustomType> GetResult() 
{ 
    GenericItem<MyCustomType> result = BuildGenericItem(); 
    return result; 
} 

सब कुछ इस बिंदु पर ठीक संकलित: मैं तो एक WCF सेवा के माध्यम से तार पर इसे पारित करने जैसा कि यहाँ दिखाया कोशिश कर रहा हूँ।

MyNamespace.GenericItemOfMyCustomType [अतिरिक्त वर्ण] 'GetEnumerator के लिए एक सार्वजनिक परिभाषा शामिल नहीं है: जब मैं "अद्यतन सेवा संदर्भ" मेरे सिल्वरलाइट में एक फिर से संकलन एप्लिकेशन, मैं एक संकलन समय त्रुटि, निम्न के समान प्राप्त

  1. अतिरिक्त वर्ण दिखाई दे रहे हैं: '

    मुझे पता नहीं क्यों है। जब भी मैं सेवा संदर्भ अद्यतन करता हूं, हर बार बदलना प्रतीत होता है।

  2. वास्तव में इसे कैसे ठीक करें।

मैं क्या गलत कर रहा हूं?

उत्तर

7

Sleiman सही है, लेकिन एक this article में वर्णित के रूप घिरा जेनेरिक्स उपयोग कर सकते हैं, और आप को प्राप्त करने के आप क्या चाहते हैं सक्षम हो सकते हैं। यह आपको सेवा के भीतर एक सामान्य प्रकार बनाने और इसे बेनकाब करने की अनुमति देता है। लेकिन उपभोक्ता इसे सामान्य के रूप में नहीं देख पाएगा क्योंकि सेवा संचालन में निर्दिष्ट किया गया है। जेनरिक के लिए

var myBinding = new BasicHttpBinding(); 
var myEndpoint = new EndpointAddress(""); 
var myChannelFactory = new ChannelFactory<IService>(myBinding, myEndpoint); 
IService gks = myChannelFactory.CreateChannel(); 

काम करता है:

5

आप सामान्य प्रकार पैरामीटर पर निर्भर डब्ल्यूसीएफ अनुबंधों को परिभाषित नहीं कर सकते हैं। जेनेरिक .NET के लिए विशिष्ट हैं, और उनका उपयोग करके डब्ल्यूसीएफ की सेवा-उन्मुख प्रकृति का उल्लंघन होगा। हालांकि, डेटा अनुबंध में डेटा सदस्य के रूप में संग्रह शामिल हो सकता है क्योंकि डब्ल्यूसीएफ संग्रह के लिए समर्पित मार्शलिंग नियम प्रदान करता है।

-3

आप ग्राहक के पक्ष निम्नलिखित के बजाय servicereference का उपयोग कर उपयोग कर सकते हैं।

+0

यह हाथ से प्रश्न से दूरस्थ रूप से संबंधित नहीं है। – Seabizkit