2012-06-12 3 views
4

웹 API에서 상속 된 개체를 serialize 할 때 문제가 있습니다.ASP.NET 웹 API에서 상속 된 형식 serializer

[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을 반환하려하지만 직렬화 오류가 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

4

이것은 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;} 
} 
+0

고마워요! 그것은 그것을 완전히 해결했습니다. 바보 야. –

+1

'Item'코드에 액세스 할 수 없다면 어떻게 될까요? 예를 들어 'Item'은 타사 라이브러리에 있습니다. 어떻게 KnownType을 그 위에 둘 수 있습니까? – AnhTriet