我们正在为学生和教师建立一个社交网站。 目前我们正在开发与帐户和权限相关的东西
我们是否应该为学生和教师创建两个单独的课程,或者为一个名为Account的单个课程创建一个帐户类型属性,该属性可以是枚举{student,teacher,admin}
答案 0 :(得分:1)
遵循OO设计100%:学生不是老师。两人都是人。
但这一切都取决于他们应该做些什么。如果没有区别,只需坚持使用Account
类和type
属性来说明他们是什么类型的用户。
如果您想要遵循.NET安全模型,您应该将学生和教师添加为角色,并使用Thread.CurrentPrincipal.IsInRole("teacher")
检查他们的权限。
解决方案一
使用标记枚举。
[Flags]
public enum AccountType
{
Guest,
User,
Teacher = 2,
Admin = 4
}
public class Account
{
public bool IsTeacher
{
get { return (user.AccountType & AccountType.Teacher) != 0; }
}
public int AccounType {get;set;}
}
var teacherAndAdmin = AccountType.Teacher + AccountType.Admin;
解决方案2
使用角色数组(和单独的表)。将所有角色加载到帐户中:
public class Account
{
private List<string> _roles = new List<string>();
public void IsTeacher
{
get { return _roles.Contains(AccountRoles.Teacher); }
}
}
public static class AccountRoles
{
public const string Teacher = "Teacher";
}
答案 1 :(得分:1)
你可以创建一个Person类,并为Student和Teacher创建子类,并将模型Account作为一个单独的类,它可以有以下任何一个:1)一个属性,它只能说明它属于谁(哪个Person对象)2)一个属性,表明它是属于教师还是学生; 3)属性,其中包含一个表示该帐户具有的特权的位集(假设个人拥有的特权是帐户之间唯一的区分因素)。您希望如何实现它将取决于您希望支持的功能类型。这里提到的每种方法都有自己的优点和缺点。