[英]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.