2

假设我的系统中有两种类型的用户,教师和学生。现在教师和学生数据都存储在表用户中。因此我有一个类 User,它对应于表 User。

但后来我创建了两个类,教师和学生,它们从用户继承。除了有一些额外的属性和方法之外,这些类使代码更清晰。(我比 User 对象更了解 Teacher 对象。在教师的默认 Ctor 中,我将 UserType 等字段设置为教师的默认值)

现在我主要在 api/表示层/服务层使用教师/学生对象。但是对于数据访问层,我必须传递一个用户对象,因为它是存储在用户表中的。所以我需要从教师/学生对象中获取用户对象。

我想避免编写代码将每个属性从教师复制到用户,并且想知道其他人如何做到这一点?

另外,有没有更好的方法来设计这个而不是单独的教师/学生班级?

4

1 回答 1

8

如果它们是从用户派生的,那么它应该没关系。您可以设计您的数据访问权限以接收用户,并且由于学生或教师用户,因此它可以正常工作。

所以给定这个函数声明:

public void SaveUser(User user){
   //Save a user baby!!!
}

那么这段代码是完全有效的:

var myStudent = new Student();
var myTeacher = new Teacher();

SaveUser(myStudent);
SaveUser(myTeacher);

还是我错过了什么?

于 2012-11-28T20:22:32.213 回答