這已被問過,但不是關於這個特定的問題。幾乎我讀過的所有回覆都涉及到正在序列化的實體框架。我試圖序列化一個對象,其中包含來自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對象,但通過使用例外我已經看到它看起來像該方法甚至沒有被調用(把一個權利在該方法的開始什麼都不做)。
有沒有人知道這個世界上有什麼錯?它可能是靜態方法或可能是受保護的構造函數?
即使知道我如何找到給它循環引用的特定屬性也是非常有幫助的。