【问题标题】:Serializing inherited types in ASP.NET Web API在 ASP.NET Web API 中序列化继承的类型
【发布时间】:2012-06-12 12:15:30
【问题描述】:

在 Web API 中序列化继承的对象时遇到问题。

[DataContract] 
public class Item{
     [DataMember]
     public int ID{get; set;}
     [DataMember]
     public string Name{get; set;} }

[DataContract] 
public class SitecoreItem : Item{
     [DataMember]     
     public DbType SitecoreInstance{get; set;} }

我试图从 WebAPI 返回上面提到的 SitecoreItem,但它会发出序列化错误。我做错了什么?

【问题讨论】:

    标签: c# asp.net-web-api


    【解决方案1】:

    这与 WCF 中的序列化没有什么不同。只需使用KnownType

    [DataContract] 
    [KnownType(typeof(SitecoreItem))]
    public class Item{
         [DataMember]
         public int ID{get; set;}
         [DataMember]
         public string Name{get; set;} }
    
    [DataContract] 
    public class SitecoreItem : Item{
         [DataMember]     
         public DbType SitecoreInstance{get; set;} 
    }
    

    【讨论】:

    • 如果我们无法访问Item的代码怎么办?例如,Item 在第三方库中。我们怎么能把KnownType放在上面呢?
    猜你喜欢
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多