TIPS-快速輸入INotifyPropertyChanged屬性

為了讓物件支援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已讓宣告屬性的撰寫步驟簡化到合理可接受的程度,我選擇不再追求更省事的做法,以保有系統架構的單純性。

歡迎推文分享:
Published 13 March 2013 07:09 AM 由 Jeffrey
Filed under: , , ,



意見

# Ike said on 12 March, 2013 09:38 PM

請教一下…為什麼是「剃刀」!?

# Yang said on 12 May, 2013 10:15 AM

“剃刀”:若无必要,勿增实体

# Ike said on 12 May, 2013 09:40 PM

哈,我是想問…為什麼是用「剃刀」來當理論的名稱,而不是「菜刀」、「美工刀」、「手刀」…之類的?

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<March 2013>
SunMonTueWedThuFriSat
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456
 
RSS
【工商服務】
OrcsWeb: Windows Server Hosting
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication