2012-03-26 22 views
0

這已被問過,但不是關於這個特定的問題。幾乎我讀過的所有回覆都涉及到正在序列化的實體框架。我試圖序列化一個對象,其中包含來自MultiValue數據庫(UniVerse)的一些信息的ActiveRecord模式,雖然我認爲我的數據持有類的結構非常簡單,但JsonSerializer堅持要找到循環引用,並且我不能我找出找到循環引用的地方。MVC3 JsonSerializer找到神祕的循環引用?

我的對象具有這種結構的它:

/// <summary> 
/// Textbook Active Record 
/// </summary> 
public class TextbookActiveRecord 
{ 
    public DBValue<string> ISBN { get; private set; } 
    public DBValue<string> Synonym { get; private set; } 
    public DBValue<DateTime> LastUpdate { get; private set; } 
    public DBValue<string> Author { get; private set; } 
    public DBValue<string> Title { get; private set; } 
    //....up to 70 more properties for some of my tables.... 

    protected TextbookActiveRecord() { } 

    public static TextbookActiveRecord GetByISBN(string isbn) 
    { 
     //....Creates a new object and fills in the values above... 
    } 
} 

的DBValue類是隻是一個包裝類,它讓我對待每一個值,好像它是一個通用的,如果我需要通過向下轉換到DBValue(沒有<T>),同時也允許所有類型爲空。當我嘗試序列化從TextbookActiveRecord.GetByISBN()創建的此對象的實例時,我得到了循環引用錯誤。我的任何DBValue對象都不使用string,float,int或DateTime以外的類作爲模板。

我已經嘗試實現ISerializable接口,並使用GetObjectData方法來填充SerializationInfo對象,但通過使用例外我已經看到它看起來像該方法甚至沒有被調用(把一個權利在該方法的開始什麼都不做)。

有沒有人知道這個世界上有什麼錯?它可能是靜態方法或可能是受保護的構造函數?

即使知道我如何找到給它循環引用的特定屬性也是非常有幫助的。

回答

0

使用方法序列化類也讓我頭疼。在方法中使用linq是我的問題。

我通過刪除方法並將它們添加爲擴展方法來解決此問題,以便實際的序列化類僅由屬性組成。