建立用户、密码类型
每次做用戶密碼等類型的驗證都很麻煩,最近想了個辦法來簡化判斷的邏輯。
?????? .Net中提供了隱式轉換,雖然降低了代碼可讀性,但是使用確實很方便。而且我認為,定義自己的類型使用它并不會降低可讀性。
?????? 可以定義用戶類型UserName
?1?using?System;
?2?using?System.Text.RegularExpressions;
?3?
?4?namespace?SiteModel.Business
?5?{
?6?????///?<summary>
?7?????///?UserName?的摘要說明。
?8?????///?</summary>
?9?????public?class?UserName
10?????{
11?????????private?string?username;
12?
13?????????public?UserName(string?username)
14?????????{
15?????????????this.username?=?username;
16?????????}
17?
18?????????public?static?implicit?operator?UserName(string?password)?{
19?????????????if(!AccessName(password))?????????//如果用戶名不能通過正則表達式驗證,則返回null值
20?????????????????return?null;
21?????????????return?new?UserName(password.Trim());??????//返回UserName實例對象
22?????????}
23?
24?????????private?static?bool?AccessName(string?name)?{
25?????????????Regex?reg?=?new?Regex("^[a-zA-Z][a-zA-Z0-9]{4,15}$");
26?????????????if(reg.Match(name).Success)
27?????????????????return?true;
28?????????????return?false;
29?????????}
30?????}
31?}
32?使用的時候
SiteModel.Business.UserName username = name.Text;???//name為TextBox控件
???if(username==null) {
??????????Label1.Text = "<br>用戶名格式輸入錯誤!";
??????????return;
???}
這就簡單了。
密碼類型可以這樣定義
?1?using?System;
?2?using?System.Text.RegularExpressions;
?3?
?4?namespace?SiteModel.Business
?5?{
?6?????///?<summary>
?7?????///?PassWord?的摘要說明。
?8?????///?</summary>
?9?????public?class?PassWord
10?????{
11?????????private?string?password;
12?
13?????????public?PassWord(string?password)
14?????????{
15?????????????this.password?=?password;
16?????????}
17?
18?????????public?static?implicit?operator?PassWord(string?password)?{
20?????????????if(!AccessPass(password))??????//如果不通過正則表達式驗證,則返回null
21?????????????????return?null;
22?????????????return?new?PassWord(password.Trim().ToLower()).MD5();???//返回實例后MD5加密(轉換成小寫,不區分大小寫)
23?????????}
24?
25?????????private?string?MD5()?{
26?????????????return?System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password.ToString(),"MD5").ToLower();?
27?????????}
28?
29?????????private?static?bool?AccessPass(string?pass)?{
30?????????????Regex?reg?=?new?Regex("^[a-zA-Z0-9]{6,16}$");
31?????????????if(reg.Match(pass).Success)
32?????????????????return?true;
33?????????????return?false;
34?????????}
35?????}
36?}
37?使用也是一樣
SiteModel.Business.PassWord password = pass.Value;
???if(password==null) {
??????????Label2.Text = "<br>密碼格式輸入錯誤!";
?????????return;
???}
照這樣的方法也能定義出其他項目需要的特殊數據類型。
謝平?? 2006年8月29日
http://www.cnblogs.com/birdshover/
?????? .Net中提供了隱式轉換,雖然降低了代碼可讀性,但是使用確實很方便。而且我認為,定義自己的類型使用它并不會降低可讀性。
?????? 可以定義用戶類型UserName
?1?using?System;
?2?using?System.Text.RegularExpressions;
?3?
?4?namespace?SiteModel.Business
?5?{
?6?????///?<summary>
?7?????///?UserName?的摘要說明。
?8?????///?</summary>
?9?????public?class?UserName
10?????{
11?????????private?string?username;
12?
13?????????public?UserName(string?username)
14?????????{
15?????????????this.username?=?username;
16?????????}
17?
18?????????public?static?implicit?operator?UserName(string?password)?{
19?????????????if(!AccessName(password))?????????//如果用戶名不能通過正則表達式驗證,則返回null值
20?????????????????return?null;
21?????????????return?new?UserName(password.Trim());??????//返回UserName實例對象
22?????????}
23?
24?????????private?static?bool?AccessName(string?name)?{
25?????????????Regex?reg?=?new?Regex("^[a-zA-Z][a-zA-Z0-9]{4,15}$");
26?????????????if(reg.Match(name).Success)
27?????????????????return?true;
28?????????????return?false;
29?????????}
30?????}
31?}
32?使用的時候
SiteModel.Business.UserName username = name.Text;???//name為TextBox控件
???if(username==null) {
??????????Label1.Text = "<br>用戶名格式輸入錯誤!";
??????????return;
???}
這就簡單了。
密碼類型可以這樣定義
?1?using?System;
?2?using?System.Text.RegularExpressions;
?3?
?4?namespace?SiteModel.Business
?5?{
?6?????///?<summary>
?7?????///?PassWord?的摘要說明。
?8?????///?</summary>
?9?????public?class?PassWord
10?????{
11?????????private?string?password;
12?
13?????????public?PassWord(string?password)
14?????????{
15?????????????this.password?=?password;
16?????????}
17?
18?????????public?static?implicit?operator?PassWord(string?password)?{
20?????????????if(!AccessPass(password))??????//如果不通過正則表達式驗證,則返回null
21?????????????????return?null;
22?????????????return?new?PassWord(password.Trim().ToLower()).MD5();???//返回實例后MD5加密(轉換成小寫,不區分大小寫)
23?????????}
24?
25?????????private?string?MD5()?{
26?????????????return?System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password.ToString(),"MD5").ToLower();?
27?????????}
28?
29?????????private?static?bool?AccessPass(string?pass)?{
30?????????????Regex?reg?=?new?Regex("^[a-zA-Z0-9]{6,16}$");
31?????????????if(reg.Match(pass).Success)
32?????????????????return?true;
33?????????????return?false;
34?????????}
35?????}
36?}
37?使用也是一樣
SiteModel.Business.PassWord password = pass.Value;
???if(password==null) {
??????????Label2.Text = "<br>密碼格式輸入錯誤!";
?????????return;
???}
照這樣的方法也能定義出其他項目需要的特殊數據類型。
謝平?? 2006年8月29日
http://www.cnblogs.com/birdshover/
轉載于:https://www.cnblogs.com/birdshover/archive/2006/08/29/a1.html
總結
- 上一篇: 中国的怪现象
- 下一篇: 软件工程心理学之1----开篇