Suppose I have two classes:
class Employee
and
class AdvancedEmployee:Employee
I know something like this won't work, as I can't downcast on C#:
var employee = new Employee();
var advanced = employee as AdvancedEmployee;
My question is: How to accomplish downcast in a efficient way? Actually I have a constructor on AdvancedEmployee that takes a Employee as parameter and use it to inject its values, basically making a clone.
Update
To solve the data that would get duplicated I changed the approach a bit and now AdvancedEmployee CONTAINS an employee rather than being one itself. Example:
class Employee;
class AdvancedEmployee
{
private employee
public AdvancedEmployee(Employee employee){
this.employee = employee
}
}
It can not be a cast, it's actually a conversion between different types.
I would add a ctor or static member function like AdvancedEmployee FromBase(Employee e)
, to construct derived type from given base type.