建立用户、密码类型
每次做用户密码等类型的验证都很麻烦,最近想了个办法来简化判断的逻辑。
.Net中提供了隐式转换,虽然降低了代码可读性,但是使用确实很方便。而且我认为,定义自己的类型使用它并不会降低可读性。
可以定义用户类型UserName
SiteModel.Business.UserName username = name.Text; //name为TextBox控件
if(username==null) {
Label1.Text = "<br>用户名格式输入错误!";
return;
}
这就简单了。
密码类型可以这样定义
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
使用的时候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
使用也是一样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/