2012-05-02 45 views
1

我使用的ASP.NET Web API,我試圖返回一個類,它看起來像這樣的實例:asp.net網頁API - 接口成員的JSON序列化導致神祕的錯誤

public class Whatever 
{ 
    public int MyInt {get; set;} 
    public IFoo MyFoo {get; set;} 
} 

當此實例被序列化爲JSON時,IFoo成員(可能是實現IFoo的許多類中的任何類的實例)會奇怪地序列化。屬性名稱寫的,但它的價值是HTML包含這樣的錯誤消息的大塊:

You must write an attribute 'type'='object' after writing the attribute with local name '__type'. 

這是框架告訴我,它不知道如何序列鑄成的接口實例?或者是其他東西?

+1

沒有解釋的downvote沒有任何用處。 – David

+0

我的實驗表明,問題在於成員被表示爲一個接口。當以具體類型表示時,錯誤消失。但有些情況下我需要能夠將多個類型分配給同一個類的成員。那我該怎麼做? – David

回答

3

每當框架嘗試序列化類型爲接口的成員時,就會出現此錯誤。除了改變成員以使其類型具體以外,我無法找到解決此問題的其他方法。

+0

是的,你不能序列化一個接口。你必須提供KnownTypes和所有。避免暴露Web API中的接口。 – Aliostad

+0

感謝您的回覆。我從來沒有遇到過KnownTypes的事情。正如你所說,無論如何,在視圖模型類中有一個接口成員可能不是一個好設計。 – David