2010-03-26 8 views
11

वेब servce में मैं कहता हूँमेरी डब्लूसीएफ सेवा सूची <T> की बजाय वापसी क्यों करती है?

public List<Customer> GetCustomers() 
    { 
     PR1Entities dc = new PR1Entities(); 
     var q = (from x in dc.Customers 
       select x).ToList(); 
     return q; 
    } 

जब मैं सेवा जोड़ने

तब मैं प्रॉक्सी उत्पन्न .. और reference.cd में यह कहना

public wcf1.ServiceReference1.Customer[] GetCustomers() { 
     return base.Channel.GetCustomers(); 
    } 
(ग्राहक एक इकाई वस्तु है)

यह एक ARRAY क्यों है? मैंने एक सूची मांगी।

सहायता।

उत्तर

26

सेवा संदर्भ पर राइट क्लिक करें और सेवा संदर्भ कॉन्फ़िगर करें का चयन करें।

संग्रह प्रकार ड्रॉप-डाउन में, System.Collections.Generic.List टाइप करें का चयन करें।

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

+0

दिलचस्प। ASP.NET की बजाय चांदी की रोशनी का उपयोग करते समय चीजें ठीक वही काम करती हैं? – punkouter

+0

मुझे यकीन नहीं है कि आप वास्तव में क्या मतलब रखते हैं, लेकिन मैं बिना किसी मुद्दे के सिल्वरलाइट में इस प्रकार के कास्टिंग को पूरी तरह से कॉन्फ़िगर करने में सक्षम हूं। डिफ़ॉल्ट रूप से, सिल्वरलाइट उन्नत बाध्यकारी क्षमताओं का लाभ उठाने के लिए अवलोकन को अवलोकन करने योग्य चयन में परिवर्तित कर देगा। संक्षेप में, मेरा मानना ​​है कि जिस उत्तर को आप ढूंढ रहे हैं वह है, हाँ! –

1

क्योंकि इस तरह एक सूची धारावाहिक है। क्लाइंट साइड पर आपकी Customer कक्षा सेवा मेटाडेटा से उत्पन्न की गई है, जो प्रभावी रूप से वर्णन करती है कि यह कैसे क्रमबद्ध है कि यह मूल रूप से परिभाषित नहीं किया गया था। यदि आपका मूल Customer वर्ग उपलब्ध है, तो आप सेवा संदर्भ उत्पन्न करते समय इसे क्लाइंट कोड में पुन: उपयोग करने के लिए निर्दिष्ट कर सकते हैं, और फिर यह List<T> के माध्यम से आ जाएगा।

3

अपने सेवा संदर्भ पर राइट क्लिक करें -> सेवा संदर्भ कॉन्फ़िगर करें -> "डेटा प्रकार" के अंतर्गत "संग्रह प्रकार" बदलें System.Collections.ArrayList या जो भी प्रकार आप सरणी को deserialize करना चाहते हैं।

आपकी सूची एक सरणी (सर्वर पक्ष) में क्रमबद्ध है। आप इसे चुनने का तरीका चुनते हैं (क्लाइंट साइड)।

2

मेरे पास सिस्टम पर सेट है। चयन। जेनेरिक.लिस्ट, लेकिन अचानक जब मैं एक अद्यतन सेवा संदर्भ करता हूं, तो मेरी जेनरेट की गई प्रॉक्सी ऐरे प्रकार लौट रही है! उसके साथ क्या है?

+0

क्या आपको अपनी समस्या हल हो गई? मेरे भी हालात ठीक वैसे ही हैं। –

+0

मुझे यह समस्या भी हो रही है। यह निश्चित रूप से जेनेरिक.लिस्ट पर सेट है। =/ – JHubbard80

+0

मुझे एक ही समस्या थी। यहां मेरा हल किया गया: http://stackoverflow.com/questions/16657982/wcf-returns-arrayofkeyvalueofintstringkeyvalueofintstring-instead-of-dictionar –

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