Quantcast
Channel: 黑暗執行緒
Viewing all articles
Browse latest Browse all 2447

TIPS-快速輸入INotifyPropertyChanged屬性

$
0
0

為了讓物件支援Data Binding,資料物件必須實作INotifyPropertyChanged介面,提供PropertyChanged事件,並在屬性值變動時,以便即時通知UI更新繫結對象的顯示內容。而實作INotifyPropertyChanged的類別,在宣告每個屬性時都要寫成如下格式:

private bool connected;
public bool Connected
{
    get { return connected; }
    set
    {
        connected = value;
        OnPropertyChanged("Connected");
    }
}

不能只用public bool Connected { get; set; }帶過。

為了簡化撰寫程序,我會用propfull Snippet(Snippet是什麼? 能吃嗎?)先建出私有變數、get、set區塊,再為set區塊插入OnPropertyChanged。問題出在,我是一名耐心比0.5自動鉛筆筆芯還細的莽夫,同樣的步驟重複超過三次就會肝火上升,於是興起製作內含OnPropertyChanged程式碼propfull的念頭。動手前找了一下,網路上已有先進寫好了Snippet,這下就樂得不用自己造輪子囉~

將該文章的兩段程式存成notifyo.snippet及notifyp.snippet,開啟VS2012的Code Snippet Manager,即可將這兩個Snippet匯入Visual C#自訂程式片段區。(X:\Users\username\Documents\Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets)

匯入後,現在只要輸入notifyp,Visual Studio會自動帶出程式片段,我們只需填入型別及屬性名稱(下圖紅框處,一個包含OnPropertyChanged的屬性宣告就完成了。

網路上還有其他透過更複雜機制簡化程式撰寫的方法(例如使用Attribute標示,或是像這篇,甚至用上了修改MSIL的大絕... 佷可怕,不要問!),個人偏愛KISS原則(Keep It Simple and Stupid,或者更有學問一點,要說我是奧卡姆剃刀的愛用者),使用Snippet已讓宣告屬性的撰寫步驟簡化到合理可接受的程度,我選擇不再追求更省事的做法,以保有系統架構的單純性。


Viewing all articles
Browse latest Browse all 2447

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>