0
我有我的DataContract定義爲抽象對象集合定義在WCF服務
Collection<BaseAbstractObject>
,我想與類型ClassA的的一些繼承的對象來填充對象的集合。
我用肥皂UI創建我的服務方法這樣的要求,但我會得到錯誤「不能創建一個抽象類」
我還飾基類[已知類型(ClassA)]屬性。我的XML請求如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:wcf="http://schemas.datacontract.org/2004/07/WcfService1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<tem:GetDataUsingDataContract>
<tem:composite>
<wcf:ClassesCollection>
<wcf:BaseClass i:type="ClassA" >
<wcf:Id>1</wcf:Id>
<wcf:Name>ClassA</wcf:Name>
</wcf:BaseClass>
</wcf:ClassesCollection>
</tem:composite>
</tem:GetDataUsingDataContract>
</soapenv:Body>
</soapenv:Envelope>
這是我DataContracts看起來像:
[DataContract]
public class MyDataContract
{
public MyDataContract()
{
ClassesCollection = new Collection<BaseClass>();
}
[DataMember]
public Collection<BaseClass> ClassesCollection { get; private set; }
}
[DataContract]
[KnownType(typeof(ClassA))]
public abstract class BaseClass
{
[DataMember]
public int Id { get; set; }
}
[DataContract]
public class ClassA : BaseClass
{
[DataMember]
public int Name { get; set; }
}
那麼應該怎麼我的請求樣子?或者需要向DataContract添加一些其他屬性?
謝謝,在這種情況下不需要私有setter,但問題出現在Type參數的前綴「a」中。 – LadislavM