2010-03-26 11 views
11

Ben WCF servisim neden bir liste <T> yerine geri geliyor ve ARRAY? Web servce olarak

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

demek ben hizmet eklediğinizde

Sonra proxy oluşturmak .. ve reference.cd o

public wcf1.ServiceReference1.Customer[] GetCustomers() { 
     return base.Channel.GetCustomers(); 
    } 
demek (müşteri bir varlık nesnedir)

NEDEN ARAMADIR? Bir liste istedim.

yardımcı olur.

cevap

26

Servis referansını sağ tıklayın ve Servis Referansını Yapılandır'ı seçin.

Koleksiyon Tipi açılır menüsünde, System.Collections.Generic.List yazın.

Array'ın varsayılan nedeninin, serileştirme işleminde en uyumlu olması gerektiğine inanıyorum. Hizmeti daha karmaşık bir şeyden tanıyan bir şeyden alıyorsanız, bahsettiğim gibi yapılandırabilirsiniz.

+0

İlginç. ASP.NET yerine silverlight kullanırken işler aynı şekilde çalışır mı? – punkouter

+0

Tam olarak aynı anlama geldiğinden emin değilim, ancak Silverlight'ta bu tür bir döküm işlemini sorunsuz bir şekilde yapılandırabildim. Varsayılan olarak, Silverlight, gelişmiş bağlama özelliklerinden yararlanmak için Array'ları GözlemlenebilirKoleksiyonlar'a dönüştürür. Kısacası, aradığınız cevabın, evet olduğuna inanıyorum! –

1

Çünkü bir liste nasıl serileştirir. İstemci tarafında bulunan Customer sınıfınız, hizmetin özgün olarak nasıl tanımlandığının nasıl serileştirildiğini açıklayan hizmet meta verilerinden oluşturulmuştur. Orijinal Customer sınıfınız varsa, hizmet referansını oluştururken istemci kodunda yeniden kullanmayı belirtebilirsiniz ve ardından List<T> olarak gelir.

3

Servis referansınıza sağ tıklayın -> Servis Referansını Yapılandır -> "Veri Türü" altında "Koleksiyon Tipi" seçeneğini System.Collections.ArrayList olarak değiştirin veya dizinin istediğiniz gibi dizilemesini istediğiniz gibi değiştirin.

Listeniz bir diziye serileştirilmiştir (sunucu tarafı). Nasıl seri hale getirileceğini siz seçersiniz (müşteri tarafı).

2

System.Collections.Generic.List olarak ayarlanmış durumdayım, ancak Update Service Reference yaptığımda birden bire, oluşturulan proxy dizisi Array türlerini döndürüyor! ne var ne yok

+0

Sorununuzu çözdünüz mü? Ben aynı durumdayım. –

+0

Bu problemi de yaşıyorum. Kesinlikle Jenerik.List'e ayarlanmıştır. =/ – JHubbard80

+0

Aynı sorunu yaşadım. Burada çözülen benimki: http://stackoverflow.com/questions/16657982/wcf-returns-arrayofkeyvalueofintstringkeyvalueofintstring-instead-of-dictionar –

İlgili konular