2010年9月1日 星期三

Enum 物件的屬性值的限定使用、DropDownList使用Enum

有時候有些物件的屬性並不需要在往後去動態新增資料,例如性別、狀態(是與否)等,
雖然說可以在程式的攥寫中使用簡單的數值或是字串做表示也是可行的,但是總是不太直覺,
例如說,人員的性別,帶入的數值如果是用0、1或是F、M來表示,
要是沒有好好的下註解說明,維護程式的人還真的不知道該給什麼值,
如果有個方法可以讓維護人員可以快速又直覺的知道有些什麼資料可以帶入,這樣就很方便了。




實作
在一個Person的類別中先建立好PersonGender的Enum
   1: /// <summary> 
   2: /// 性別 
   3: /// </summary> 
   4: public enum PersonGender 
   5: { 
   6:     Female = 0, 
   7:     Male = 1, 
   8:     Unknown = 2 
   9: }

然後Person類別的性別屬性型態要指定這個Enum的名稱
   1: /// <summary> 
   2: /// 人員性別 
   3: /// </summary> 
   4: private PersonGender _Gender; 
   5:  
   6: public PersonGender Gender 
   7: { 
   8:     get{ return _Gender; } 
   9:     set{ _Gender = value; } 
  10: }

完成,如下圖

20081004_01

在ASP.NET輸入表單中,也可以使用DropDownList去Bind這個Enum
   1: //Gender 
   2: ddlGender.DataSource = Enum.GetNames(typeof(Person.PersonGender)); 
   3: ddlGender.DataBind();

如下圖所示

20081004_02

而取得所選值的方式,用的是 Enum.Parse(),取回的是一個Object,所以要記得做型態轉換,

這樣一來就可以取得Enum的列舉值
   1: //取得 0 1 2的數值 
   2: int _value = (int) P.PersonGender;

而因為存入資料庫的資料是Enum的列舉值(就是0 1 2 ...),所以由數值再轉回列舉名稱一樣也可以使用Enum.Parse()方法
   1: //得到 Female Male Unknown 
   2: P.Gender = (Person.PersonGender)Enum.Parse(typeof(Person.PersonGender), dr["Gender"].ToString());

以上

在一些輸入限定資料的地方,可以多多使用 Enum的方式,讓程式維護更加清楚與容易。

Enum.Parse 方法
http://msdn.microsoft.com/zh-tw/library/system.enum.parse(VS.80).aspx

沒有留言:

張貼留言

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。