2013-09-27 30 views
0

我正在開發一個項目,我必須使用WCF將數據從客戶端設備發送到服務器。該項目有一個已經開發的模型。模型中的所有類都是SObject的子類。如何使用WCF發送基礎對象中的所有對象

在同步項目中,我正在做以下工作。

[ServiceContract]  
public interface IMobileService 
{ 

    [OperationContract] 
    SynchronizeResponse Synchronize(SynchronizeRequest request); 

    [OperationContract] 
    SynchronizeResponse Checkout(CheckoutRequest request); 
} 

[DataContract] 
public class SynchronizeResponse 
{ 
    [DataMember] 
    public bool FullSync { get; set; } 

    [DataMember] 
    public IEnumerable<Student> Students { get; set; } 

    [DataMember] 
    public IEnumerable<Teacher> Teachers { get; set; } 

    [DataMember] 
    public IEnumerable<SObject> SObject { get; set; }} 

和類SynchronizeRequest

它可以以這種方式同類型的代碼。但我怎麼發送只包含所有子對象的SObject?我在SyncRequest屬性中嘗試了[KnownType(typeof(Student))]。但它會拋出異常。

沒有編輯模型,什麼是完成任務的最佳方式。

回答

0

試試這個:(我想我能做到,因爲你沒有」最佳供應的所有定義

[DataContract] 
[Serializable] 
[KnownType(typeof(MyConcrete001))] 
[KnownType(typeof(MyConcrete002))] 
public abstract class SObject 
{} 
+0

所以我的項目有53個班,你的意思是我應該寫每類作爲knowtype上的sObject的頂部。 ?在模型中? – sagheer

+0

也許你可以使用這個頁面上的例子進行一些反思..?否則,我認爲你是正確的,你必須明確地列出每個期望的類型。http://msdn.microsoft.com/。 COM/EN-US /庫/ system.servicemodel.serviceknowntypeattribute.aspx –