如何从SubClass创建SuperClass实例?

sha*_*shi 2 c# oop

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

但后来我创建了两个继承自User的类,即Teacher和Student.除了有一些额外的属性和方法,这些类使代码更清晰.(我更了解Teacher对象而不是User对象.在默认的Ctor of Teacher中,我将UserType之类的字段设置为Teacher的默认值)

现在我主要在api/presentation layer/services层使用Teacher/Student对象.但是对于数据访问层,我必须传递一个User对象,因为它是存储在Users表中的对象.所以我需要从Teacher/Student对象中获取User对象.

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

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

Jos*_*osh 8

如果它们来自用户,则无关紧要.您可以设计数据访问权限以接收用户,并且由于学生或教师用户,因此它可以正常工作.

所以给出了这个函数声明:

public void SaveUser(User user){
   //Save a user baby!!!
}
Run Code Online (Sandbox Code Playgroud)

那么这段代码完全有效:

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

SaveUser(myStudent);
SaveUser(myTeacher);
Run Code Online (Sandbox Code Playgroud)

或者我错过了什么?