第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

保存信息列表時(shí)防止用戶錯(cuò)誤

保存信息列表時(shí)防止用戶錯(cuò)誤

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

2 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

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

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


查看完整回答
反對 回復(fù) 2021-11-14
?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

有時(shí)當(dāng)你想強(qiáng)調(diào)你的集合不應(yīng)該被修改時(shí),將它作為一個(gè) IEnumerable 公開,除了 List 可能就足夠了,但如果你正在編寫一些嚴(yán)肅的 API,像存儲(chǔ)庫模式這樣的東西似乎是一個(gè)很好的解決方案。


查看完整回答
反對 回復(fù) 2021-11-14
  • 2 回答
  • 0 關(guān)注
  • 180 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號