0
我有一個自引用循環。我試着閱讀和實施其他一些答案,但似乎並不奏效。我有一個類,將我的對象保存爲json文件(方法)。它試圖序列化對象,但爲自引用循環引發異常。我正在序列化的對象是第二個塊(類)。我該如何解決這個問題?它一直工作,直到我添加按鈕,所以我假設我在處理程序中做了一些錯誤,但我真的不知道。自引用循環錯誤
Public Sub saveLocalSettings()
Console.WriteLine("saveLocalSettings")
If Not Directory.Exists(_SettingsFile) Then
Directory.CreateDirectory(_SettingsFile)
End If
' Try
Dim strConfigurationManager As String = JsonConvert.SerializeObject(_LocalSettings, PreserveReferencesHandling.Objects)
'Dim strConfigurationManager As String = JsonConvert.SerializeObject(_LocalSettings, Newtonsoft.Json.ReferenceLoopHandling.Ignore)
lm.writeFile(_SettingsFile + _FileName, strConfigurationManager, True)
' Catch ex As Exception
' End Try
End Sub
Imports Newtonsoft.Json
Public Class RGOSetting
Public Property id As String
Public Property title As String
Private mtbTitle As New MaskedTextBox
Public Property sharestatus As Integer
Public Property settingstring As String
Public Property userid As Integer
Public Property setting_profiles As New List(Of RGOSettingProfile)
Private rgolcm As RGOLeagueChampionManager
' Private rgolssm As RGOLeagueSumSpManager
Public btnUpdate As New Button
Public btnReset As New Button
Public btnClear As New Button
End Class
Public Class RGOSettingProfile
Public Property champion As LeagueChampion
Public Property summoner_spells As New List(Of LeagueSummonerSpell)
Public Sub New()
End Sub
Public Sub New(ByVal strChampion As String, ByVal strSummonerSpell As List(Of String))
End Sub
End Class
你到底想幹什麼?你不能序列化控件(至少不是這樣),所以不清楚它們爲什麼在那裏。 '_LocalSettings'是'RGOSetting'的一個實例嗎?什麼是'RGOSettingProfile'?你是否想做一些配置文件(多個命名配置集)? – Plutonix
是的,我有多個設置的多個設置。這些控件是動態添加到面板的,我需要添加一個處理程序來保存它。我在這裏有圖片:https://docs.google.com/document/d/1-0AOVbB5W589j52-LEN1wRat80jPrLTmCjtoOj0u7Pc/edit?usp=sharing。我仍然需要添加第二部分,每個冠軍都會生成另一個圖標面板,您可以在其中選擇/取消選擇對象。你可以選擇任何一個冠軍,每個冠軍都有一個相同選項的列表。我還添加了RGOSettingProfile –
如果有3個按鈕與每個事物相關聯,則它們不需要是動態的 - 給定名稱它們在每種情況下都做同樣的事情。從用戶數據中分離出用戶界面的東西(數據中的東西可能會將它們映射爲像文本或圖像一樣)。將數據鏈接到UI的一種方法是創建一個用戶控件。當傳遞其中一個對象時,它會相應地顯示數據。 – Plutonix