Eğer sınıflardan [Serializable]
özelliklerini kaldırabilir, bu olmadan çalışması gerekir. POCO'lar özniteliğin mevcut olmasını gerektirmez, onlar oldukları gibi serileştirir.
Edit: Web hizmeti çıktısının ne olduğunu kontrol ettiniz mi, yoksa yalnızca servis web uç noktasındaki mesaj tanımına bakıyor musunuz?
Ben tarayıcınızda hizmet bitiş noktasına göz oluşturulan SABUN ileti biçimi taban sınıfı alanları hakkında hiçbir şey bilmek görünmüyor görebilirsiniz: Web hizmetini aradığınızda
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetDerivedClassObjectsResponse xmlns="http://tempuri.org/">
<GetDerivedClassObjectsResult>
<DerivedClass>
<Name>string</Name>
</DerivedClass>
<DerivedClass>
<Name>string</Name>
</DerivedClass>
</GetDerivedClassObjectsResult>
</GetDerivedClassObjectsResponse>
</soap:Body>
</soap:Envelope>
Ama Storm test formu kullanarak veya sınıf tefrika olur:
<DerivedClass>
<Key>1</Key>
<IsModified>true</IsModified>
<IsNew>true</IsNew>
<IsDeleted>true</IsDeleted>
<Name>Test1</Name>
</DerivedClass>
visual studio "web referansı ekle" iletişim de doğru vekil sınıfları oluşturur.
Düzenleme 2: web hizmeti tanımına baktığımızda (? Service.asmx wsdl) bizim için üretilen, biz kendi alanlarına aşağı nesneyi düzleştirme aksine tanımı, orijinal miras hiyerarşisini koruyan görebilirsiniz serileştirme işlemi:
<s:complexType name="DerivedClass">
<s:complexContent mixed="false">
<s:extension base="tns:BaseClass">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="BaseClass">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Key" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="IsModified" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="IsNew" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="IsDeleted" type="s:boolean" />
</s:sequence>
</s:complexType>
İlginçtir ki hizmet son ucunda oluşturulan numune mesajı dikkate uzantısı almaz görünüyor. Ancak diğer tüm efektler ve amaçlar için kodunuz çalışmalıdır.
yinelenen soru? http://stackoverflow.com/questions/1262246/asmx-web-service-not-serializing-abstract-base-class – KBoek
sayfasına bakın. GetDerivedClassObjects() 'de ne işe yararsınız? . –
ve tümü: '[Serializable]' XmlSerializer tarafından yok sayılır. –