如何从子类创建SuperClass的实例



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

但是我创建了两个类,Teacher和Student,它们继承自User。除了具有一些额外的属性和方法外,这些类还使代码更加清晰。(我对Teacher对象比User对象了解得更多。在Teacher的默认Ctor中,我将UserType等字段设置为Teacher默认值)

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

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

此外,有没有比单独的教师/学生课程更好的设计方法?

如果它们是从User派生的,那么这应该无关紧要。您可以将数据访问设计为接收用户,由于学生或教师用户,因此它可以正常工作。

所以给定这个函数声明:

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

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

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

还是我错过了什么?

最新更新