【发布时间】:2012-04-16 10:53:50
【问题描述】:
假设我有两个类:
class Employee
和
class AdvancedEmployee:Employee
我知道这样的事情是行不通的,因为我不能在 C# 上沮丧:
var employee = new Employee();
var advanced = employee as AdvancedEmployee;
我的问题是:如何以有效的方式完成沮丧? 实际上,我在 AdvancedEmployee 上有一个构造函数,它接受一个 Employee 作为参数并使用它来注入它的值,基本上是进行克隆。
更新
为了解决可能重复的数据,我稍微改变了方法,现在 AdvancedEmployee 包含一名员工,而不是自己。 示例:
class Employee;
class AdvancedEmployee
{
private employee
public AdvancedEmployee(Employee employee){
this.employee = employee
}
}
【问题讨论】:
-
让两者都符合一个接口,IEmployee?
-
我无法修改员工。
-
@IsraelLot,你当然可以在 C# 中失望。我怀疑您只是缺少语法:
AdvancedEmployee advanced = (AdvancedEmployee)employee;当然,如果引用的对象实际上不是 AdvancedEmployee 的实例,这将产生运行时错误。 -
@Ben:在 Israel 的例子中,employee 显然不是 AdvancedEmployee 的一个实例,而只是一个 Employee。
-
@comecme,是的,我被他使用的“沮丧”这个词误导了。他根本没有贬低,他正在转换为派生类型。