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

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

ViewModels的版本控制

ViewModels的版本控制

C#
瀟瀟雨雨 2021-04-02 14:10:52
我有一個View和一個ViewModel。ViewModel不僅負責與View相關的表示,而且還啟動業務邏輯(在我們的案例中為工作流)。我的軟件可以與設備固件的不同版本進行通訊。用例1:視圖布局經過修改 在連接到不同版本時,可能需要顯示稍微不同的視圖,在這種情況下,我將創建一個新視圖并將其與新視圖模型掛鉤。這很好。用例2:視圖保持不變,但邏輯進行了底層更改為了理解這一點,假設軟件連接到固件版本(1.0.0)時,它應該顯示帶有復選框和文本框的視圖,并且僅需要啟用文本框選中該復選框時。現在,如果軟件連接到不同版本的固件(1.2.0),則應該顯示相同的視圖,但是現在不應該基于復選框選擇啟用/禁用文本框。我的問題是我需要創建一個新的視圖模型嗎?我是否應該在數據庫(1.2.0)中創建某種標記并使用相同的視圖模型,所以視圖模型中的邏輯首先檢查該標記是否存在,然后可以決定啟用/禁用控件。
查看完整描述

1 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

它可能歸結為不同的版本1、1.2和理論上的1.3的功能和/或外觀。如果確實很簡單,例如“ 1.2版不應該基于復選框的狀態禁用文本框”,則ViewModel中的一個簡單屬性可以指示固件的版本,而視圖(if ( Model.Version >= 1.2 ) {...})中可能包含一些簡單的邏輯要走的路。


但是,如果它比這更復雜(甚至沒有那么復雜),我懷疑您最好為每個固件版本創建自定義ViewModel和View。否則,隨著版本的增加和自定義邏輯的增加,您將陷入混亂。你最終會得到


if ((Model.Version >= 1.2 && Model.Version <= 1.3) || Model.Locale == EnglishSpeaking) 

{

    ...

else if ( Model.Version > 1.3 && Model.Locale == EnglishSpeaking ) 

    ... 

else if ....

這將很快失去控制。如果發生這種情況,您最好希望針對所有必需的版本方案中的所有必需功能進行一些非常具體的驗收測試,否則沒人會因為擔心無意間破壞了該邏輯而不想修改該代碼。 。


查看完整回答
反對 回復 2021-04-10
  • 1 回答
  • 0 關注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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