簡體   English   中英

通過WCF進行抽象類屬性序列化的問題

[英]Problem with abstract class properties serialization through WCF

我正在嘗試通過WCF傳遞課程。 除了沒有序列化的抽象類,這些都沒有問題。 有什么辦法可以避免這種情況?

[DataContract]
[KnownType("GetKnownTypes")]
public class BusinessObject
{
    public static Type[] GetKnownTypes()
    {
        // only returns the different types my "Field" abstract class can take
        return Services.WCFRIAKnownTypesHelperService.FieldsKnownTypes.ToArray();
    }

    [DataMember]
    public String ID { get; set; }
    [DataMember]
    public List<Section> Sections { get; set; }
    [DataMember]
    public List<Field> Fields { get; set; }
}

現在我的田野課

[DataContract]
public abstract class Field 
{
    [DataMember]
    public String FieldID { get; set; }
    [DataMember]
    public String Title { get; set; }
    [DataMember]
    public Object Content { get;set; }
}

為什么不起作用?

[KnownType]屬性期望傳遞一個靜態類型,該類型必須在編譯時就知道:

[DataContract]
[KnownType(typeof(SomeChildOfBusinessObject))]
[KnownType(typeof(SomeOtherChildOfBusinessObject))]
public class BusinessObject
{
    ...
}

如果要注冊動態已知類型,可以查看以下博客文章

盡管如果已知類型繼承了未知類型,則無法將未知類型傳輸到客戶端。 將ur類型轉換為基類時,該對象仍保留為子類,因此無法傳輸或序列化。 您可以使用rerefcltion將動態類型注冊為已知類型,但這又可能是反序列化動態類型的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM