通过反射的方法,将源对象属性的值赋给目标对象的相同属性(举例)
例如我们现在定义一个实体:
KLXForum_Users
1 [Serializable]
2 public class KLXForum_Users
3 {
4 private Guid m_UserId;
5 private string m_Username;
6 private string m_PasswordSalt;
7 private string m_Password;
8 private UserType m_UserType;
9 private DateTime m_CreateTime;
10 private string m_Remarks;
11
12 public Guid UserId
13 {
14 get { return m_UserId; }
15 set { m_UserId = value; }
16 }
17
18 public string Username
19 {
20 get { return m_Username; }
21 set { m_Username = value; }
22 }
23
24 public string PasswordSalt
25 {
26 get { return m_PasswordSalt; }
27 set { m_PasswordSalt = value; }
28 }
29
30 public string Password
31 {
32 get { return m_Password; }
33 set { m_Password = value; }
34 }
35
36 public UserType UserType
37 {
38 get { return m_UserType; }
39 set { m_UserType = value; }
40 }
41
42 public DateTime CreateTime
43 {
44 get { return m_CreateTime; }
45 set { m_CreateTime = value; }
46 }
47
48 public string Remarks
49 {
50 get { return m_Remarks; }
51 set { m_Remarks = value; }
52 }
53 }
在定义一个实体继承它:
MembershipUser
1 public class MembershipUser:KLXForum_Users,IIdentity ,IPrincipal
2 {
3
4 #region IIdentity 成员
5
6 public string AuthenticationType
7 {
8 get { return "Forms"; }
9 }
10
11 public bool IsAuthenticated
12 {
13 get { return true; }
14 }
15
16 public string Name
17 {
18 get { return base.Username; }
19 }
20
21 #endregion
22
23 #region IPrincipal 成员
24
25 public IIdentity Identity
26 {
27 get { return this; }
28 }
29
30 public bool IsInRole(string role)
31 {
32 return false;
33 }
34
35 #endregion
36 }
现在我们在定义一个用户注册的方法:
RegisterUser
1 public bool RegisterUser(KLXForum_Users user)
2 {
3 if (user == null)
4 {
5 base.ErrMsg = "参数不能为NULL";
6 return false;
7 }
8 if (GetUser(user.Username) != null)
9 {
10 base.ErrMsg = "用户已存在";
11 return false;
12 }
13 MembershipUser memberUser = new MembershipUser();
14 CommonMethods.GetSomePropertyValues(user, memberUser);
15 Membership.CreateUser(memberUser);
16 IUserRepository userRepository = DALFactory.UserRepository();
17 if (userRepository.InsertUser(memberUser) != 0)
18 return true;
19 else
20 {
21 base.ErrMsg = "用户创建异常";
22 return false;
23 }
24 }
注意上面代码第14行,如果那里用MembershipUser memberUser=(MembershipUser)KLXForum_Users的还在运行时会报异常;
异常:System.InvalidCastException: 无法将类型为“KLXForum.Entity.KLXForum_Users”的对象强制转换为类型
“KLXForum.BusinessCoreLayer.MembershipUser“。
以上这是这方法的简单用法;
这个方法很简单,但是很实用,其实还有其他很多地方用到。例如:用户注册,只要前台定义的name值和用户实体属性字段相同就可以用;

浙公网安备 33010602011771号