110,533
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 用户类
/// </summary>
public class User
{
private IList<Role> roles;
/// <summary>
/// 用户所属的角色集合
/// </summary>
public IList<Role> Roles
{
get
{
return roles;
}
set
{
roles = value;
}
}
}
/// <summary>
/// 角色类
/// </summary>
public class Role
{
private IList<Right> rights;
private IList<User> users;
/// <summary>
/// 该角色拥有的用户集合
/// </summary>
public IList<User> Users
{
get
{
return users;
}
set { users = value; }
}
/// <summary>
/// 该角色拥有的权限集合
/// </summary>
public IList<Right> Rights
{
get
{
return rights;
}
set { rights = value; }
}
}
/// <summary>
/// 权限类
/// </summary>
public class Right
{
private IList<Role> roles;
/// <summary>
/// 拥有该权限的角色集合
/// </summary>
public IList<Role> Roles
{
get
{
return roles;
}
set { roles = value; }
}
}
/// <summary>
/// 用户类
/// </summary>
public class User
{
private IList<Role> roles;
/// <summary>
/// 用户所属的角色集合
/// </summary>
public IList<Role> Roles
{
get
{
if (roles==null)
//调用数据访问层获取Roles集合
return roles;
}
set
{
roles = value;
}
}
}
public IList<Role> Roles
{
get
{
if (roles == null)
{
if (BeforeReadNullRoles != null)
{
BeforeReadNullRoles(this, EventArgs.Empty);
}
}
return roles;
}
set
{
roles = value;
}
}
/// <summary>
/// 用于在获取Roles集合前,如果Roles集合为空则触发的事件
/// </summary>
public event EventHandler BeforeReadNullRoles;
}
if (reader.Read())
{
User user = new User();
user.BeforeReadNullRoles+=new EventHandler(user_BeforeReadNullRoles);
reader.Close();
}
void user_BeforeReadNullRoles(object sender,EventArgs e)
{
User user=sender as User;
user.Roles=new RoleService().GetRolesByUserId(user.Id);//调用数据访问层方法获取用户的角色集合
}
public static bool DeleteUser(User user)
{
if (user.Roles == null)
{
user = GetUserByUserId(user.UserId);
}
if (user.Roles.Count > 0)
return true;
else
return false;
}
public IList<Role> Roles
{
get
{
if (roles==null)
//调用数据访问层获取Roles集合
return roles;
}
set
{
roles = value;
}
}
public User GetUserByUserId(int userId)
{
......
User user=new User();
user.Roles=new RoleService().GetRolesByUserId(user.Id,true);
}
public IList<Role> GetRolesByUserId(int userId,bool noForeignKey)
{
foreach(....)
{
Role role=new Role();
if (!noForeignKey)//如果需要获取外键
{
role.Users=new UserService.GetUsersByRoleId(role.Id,true);
role.Rights=new RightService.GetRightsByRoleId(role.Id,true);
}
}
}
public IList<User> GetUsersByRoleId(int roleId,bool noForeignKey)
{
foreach(....)
{
User user=new User();
if (!noForeignKey)//如果需要获取外键
{
user.Roles=new RoleService().GetRolesByUserId(user.Id,true);
}
}
}
public IList<Role> Roles
{
get
{
if (roles==null)
//调用数据访问层获取Roles集合
return roles;
}
set
{
roles = value;
}
}