c# - 如何从子类创建父类(super class)的实例?

标签 c# oop

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

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

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

我想避免编写代码来将每个属性从 Teacher 复制到 User,并且想知道其他人是如何做到这一点的?

此外,是否有更好的设计方式而不是单独的教师/学生类(class)?

最佳答案

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

给定这个函数声明:

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

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

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

SaveUser(myStudent);
SaveUser(myTeacher);

还是我遗漏了什么?

关于c# - 如何从子类创建父类(super class)的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13613669/

相关文章:

C# 创建函数作用域

php - 实用程序文件在 php 中?

oop - Coldfusion组件可以共享方法而不是同一个父类(super class)的后代吗

python - 如何在类启动中删除不需要的参数?

c# - 我们可以在 asp.net 的事务范围内调用两种不同的方法吗?

c# - 隐式创建位于依赖 dll 中的类的实例

javascript - JS 私有(private)方法没有在每次构造函数调用时重新定义

c++ - 减少重复的方法?

c# - 断言 A 中的所有内容都属于 B,B 中的所有内容都属于 A

c# - 更新 Azure 服务总线队列上已有的代理消息