'dan ServiceKnownType özniteliğini alamıyor ServiceKnownType örneğini MSDN'den uygulamayı denediğimde bir sorunla karşılaştım.svcutil, oluşturulmuş arabirim proxy'si
[DataContract()]
public class Widget
{
[DataMember]
public string Id;
[DataMember]
public string Catalog;
}
[DataContract()]
public class Machine : Widget
{
[DataMember]
public string Maker;
}
Ve aşağıdaki arayüz:
[ServiceKnownType(typeof(Widget))]
[ServiceKnownType(typeof(Machine))]
[ServiceContract()]
public interface ICatalog
{
[OperationContract]
Hashtable GetItems();
}
sorun vekil sınıfı oluşturulduğunda (“Hizmet başvurusu Ekle” seçeneğini kullanarak olmasıdır/svcutil.exe aşağıdaki sınıfları sağlamak örnekte ), “ServiceKnownType” öznitelikleri ICatalog proxy arabiriminden çıkarılarak bir istisnayla sonuçlanır. “Biçimlendirici, iletinin seri halini almaya çalışırken bir istisna attı:… " Widget "e karşılık gelen türü bilinen türler listesine ekle ” Bu sorunu çözmek için, hizmetin bilinen özniteliklerini, oluşturulan proxy arabirimine el ile eklemeliyim. Bu, kodu güncelleştirdiğimde yeniden üretildiğinden çok kötü bir çözümdür. tüm bu durumda ilginç şey, yani GetItems operasyon yerine Hashtable nesne veya bir nesne parametre olarak almak dönecekti eğer, o zaman sorun çözülecektir olacağını
[OperationContract]
object GetItems();
veya
[OperationContract]
Hashtable GetItems(object obj);
olduğunu ICINlog proxy arabiriminde “ServiceKnownType” özniteliğinin varlığında
sonuçları. Bu sorunun nasıl çözüleceğini bilen var mı?
Teşekkür
ServiceKnownType ile çalışmasını ve KnownType ile çalışmamasını istiyorum çünkü benim gerçek dünya senaryomda, değiştiremediğim bir DLL'de bulunduğundan “Widget” sınıfında bir özellik ekleyemiyorum.Senaryo için başka bir çözüm için minnettar olurum ama aynı zamanda MSDN örneğinin neden çalışmadığını bilmek istiyorum – Andy