2010-05-25 32 views
15

Wcf hizmetinde genel yöntemleri nasıl kullanabilirim? WCF. Hizmet genel yöntemleri

Bu kodu yazmış:

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

Ama şu hata alırsınız:

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.

cevap

28

Sadece olamaz. Bunu desteklemediği için bunu yapmak mümkün değil. WCF işlemini çağırmadan önce nesneyi çağıran ve çeviren bir ara yerel nesne oluşturarak, jeneriklerin nasıl geçeceğinden bahseden bu article'a bakın.

6

Bunu yapmaya çalışmamalısınız. SOAP özellikli bir web hizmetinde, WSDL yayımlandığında istemcilerin bilinmesi gerekir, böylece istemciler bir proxy oluşturabilirler. Jenerikler SOAP belirtiminde mevcut değildir. SOAP birlikte çalışabilir ve tüm dillerde generikler bulunmaz.

1

Diğerlerinin de belirttiği gibi, WCF ve SOAP bunu desteklemez. Sorun şu: istemci ve sunucu arasında ileri ve geri ilettiğiniz her şey bir XML şema belgesinde ifade edilebilir olmalıdır.

XML şeması, dize, int, datetime gibi tüm normal atomik türleri destekler ve bu atom türlerinden oluşan karmaşık türleri destekler ve kalıtımı destekler.

Ancak XML şemasının jenerikler için bir desteği yoktur ve bu nedenle, WCF ve SOAP yoluyla değiştirdiğiniz her şey genel olamaz - yalnızca somut, jenerik olmayan türler kullanmanız gerekir.

Bu konuda herhangi bir yol bilmiyorum. Bu bir sınırlama ve şimdilik bununla yaşamak zorundasın.

0

Hata, açık türlere izin verilmediğini söylüyor. Tabii, bütün kalıtsal tipleri KnownType özniteliği ile eklenmelidir

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

: Ne muhtemelen izin verilir gibi bir şeydir. veri sözleşmelerinde

+2

sözleşmeleri ne yazık ki. Hala açık bir jenerik tip olmaktan şikayet ediyor. – Sam

1

Sınırlı jenerik tipleri kullanılabilir ancak hizmet sözleşmesinde tipleri parametrelerini Belirttiğiniz olmalıdır ve geçerli verilerle belirtilen tip parametreleri olarak çalışmak görünmüyor ben sadece yapmış testinden

İlgili konular