我正在編寫一個類,它遞歸地實例化自身,以便將XSD解析爲另一種類型的XSD。它從互聯網下載並遍歷每個元素,如果其中一個元素具有位於另一個URI
中的complexType
,則它通過創建其自身的一個實例來執行相同的操作。使用靜態方法防止Stackoverflow異常
但是,當XSD太大並且有很多外部鏈接時,由於Stackoverflow
例外,今天我的班級崩潰了。
我決定把一些實例方法作爲靜態成員放到另一個類(Helper.cs
)中,現在在解析器類中調用它們。
但我不知道這是一個很好的解決方案,可以解決Stackoverflow
異常嗎?我知道如何將實例方法放入堆棧框架,但是會以相同的方式處理靜態方法嗎?它會導致任何Stackoverflow
異常?
那麼他應該怎麼做才能解決問題? –
現在聽起來很糟糕! – Tarik
+1。用於解析不可信輸入的遞歸代碼是安全問題。沒有太多的事情要做,但重構,以避免遞歸或有某種「深度遞歸預防」計數器失敗的過度嵌套結構。 –