2012年4月18日 星期三
2012年3月28日 星期三
使用文化特性
當設計一個有多語系需求的程式時,除了UI上面的文字以外,另外像日期或幣值的顯示格式也都是要考量進來的議題。 例如:日元的顯示格式為 ¥123,456,而台幣的顯示格式為 NT$123,456;或者像日期的格式,美國使用的是 月/日/年 ,而日本使用的是 年/月/日。這些差異都會因為不同地區而有所不同,簡稱文化特性。 像這類狀況,因為我們無法預期未來會面對什麼樣的使用者需求,如果等系統開發完成後,才依照不同的地區性去做修改,那這個成本肯定會變的更大。 因此如何將資料依不同的文化特性格式化就變的很重要的課題。.Net Framework 提供了 System.Globalization 命名空間來幫助開發者解決這個問題。
2012年3月27日 星期二
寄送郵件
從 .Net2.0 開始, System.Net.Mail 命名空間提供開發者建立及傳送郵件訊息的相關方法。
- MailMessage:
這個類別是用來建立電子郵件。支援簡單的純文字、HTML格式的電子郵件訊息、以及不同檢視方式、編碼標準及附加檔。 - SmtpClient:
這個類別是用來寄送電子郵件。支援匿名網路連結、使用者驗證及SSL加密,另外也可以非同步寄送電子郵件,且允許使用者在寄送完成前取消寄送。
2012年3月23日 星期五
is 和 as
由於物件都是多型的,因此可以使用某個基底類別 (Base Class) 型別的變數來存放衍生型別 (Derived Type)。
若要存取衍生型別的方法,您必須將值轉型回衍生型別。
不過,在這種情況下嘗試進行簡單轉型卻會有擲回 InvalidCastException 的風險。
這就是 C# 提供 is 和 as 運算子的原因。
您可以使用這兩個運算子測試轉型能否成功,而不會擲回例外狀況 (Exception)。
as 運算子通常比較有效率,因為如果轉型能夠成功,它實際會傳回轉型值。
is 運算子卻只會傳回布林值,因此它可以用在只是要確定物件的型別而不必實際轉型的情況。
2012年3月21日 星期三
認識反射
Reflection ,一般稱為「反映」或「反射」,反射系統提供了瀏覽和檢測資料型別的功能。 通常,我們在使用型別資料的時候,順序大都是先取得型別參考,然後建立instance,再叫用其已知的屬性或方法。 Reflection 則可以動態載入組件,再檢測該型別中有哪些的屬性或方法,再進而呼叫使用。
例如,一些外掛(plug-in)的組件,系統開發階段根本不知道會遇到什麼外掛組件,那要如何存取型別? 通常就是透過 Reflection 動態載入組件,再將組件中的型別繫結給已知的物件,進而叫用其方法(method)或存取其屬性(property)。
反射組件的屬性
當我們設計一個組件時,除了類別的定義之外,還有一些額外的資訊是不包含在類別之中的,例如:版本編號,作者,公司資訊等等。 這些資訊統稱組件屬性,也就是前一節介紹的組件中繼資料。 欲編輯這些資訊可以在專案中開啟 AssemblyInfo 這個檔案,它就是用來儲存組件屬性的設定檔。(C#的檔案名稱為 AssemblyInfo.cs;VB的檔案名稱為 AssemblyInfo.vb)