如何从SubClass创建SuperClass实例?

时间:2012-11-28 20:18:25

标签: c# oop

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

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

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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

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

然后这段代码完全有效:

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

SaveUser(myStudent);
SaveUser(myTeacher);

或者我错过了什么?