亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

保存信息列表時防止用戶錯誤

保存信息列表時防止用戶錯誤

C#
達令說 2021-11-14 16:03:20
我有一個private List<Experience> experiences;跟蹤一般體驗和體驗特定信息的信息。我正在使用 Json Serialize 和 Deserialize 來保存和加載我的列表。當您啟動應用程序時,列表會自動使用當前保存的信息填充自身,當新體驗添加到列表時,它會將新列表保存到文件中。我想提前解決的一個問題是,沒有什么可以阻止用戶在任何時候做類似的事情experiences = new List<Experience>();,然后為其添加新體驗。保存這會導致所有以前的數據丟失,因為現在每次保存都會覆蓋文件。在理想的世界中,這不會發生,但我想弄清楚如何更好地構建我的代碼來防范它?;旧衔蚁虢箯牧斜碇袆h除項目或在列表已經從加載中填充后將列表設置為新列表。我曾考慮過將最新添加到文件中的想法,但我也想涵蓋更改列表中現有項目的屬性的情況,并且考慮到列表永遠不會有那么大的文件,我認為覆蓋將是最簡單的方法,因為成本不是問題。非常感謝在找出最佳方法方面的任何幫助。編輯 * 查看存儲庫模式https://www.infoworld.com/article/3107186/application-development/how-to-implement-the-repository-design-pattern-in-c.html這似乎是一個潛力方法。
查看完整描述

2 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

我假設您的用戶在這種情況下是您的 API 的代碼級使用者,并且他們將使用同一內存堆棧中的結果,這讓您擔心引用突變。

在這種情況下,我會在讀取操作時返回列表的副本而不是列表本身,并且在寫入時只允許添加和刪除,因為 maccettura 在評論中建議。如果您希望消費者能夠改變它們,您可以保持對列表中項目的引用完整無缺,但我會仔細考慮這是否適合您的用例,并考慮要求消費者調用更新函數(這可能與您的添加函數 a-la HTTP PUT 相同)。


查看完整回答
反對 回復 2021-11-14
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

有時當你想強調你的集合不應該被修改時,將它作為一個 IEnumerable 公開,除了 List 可能就足夠了,但如果你正在編寫一些嚴肅的 API,像存儲庫模式這樣的東西似乎是一個很好的解決方案。


查看完整回答
反對 回復 2021-11-14
  • 2 回答
  • 0 關注
  • 194 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號