Пусть у меня есть два класса:Cast базовый экземпляр для производного класса (опущенными) в C#
class Employee
и
class AdvancedEmployee:Employee
Я знаю, что-то вроде этого не будет работать, так как я не могу downcast на C#:
var employee = new Employee();
var advanced = employee as AdvancedEmployee;
Мой вопрос: Как эффективно выполнить downcast? На самом деле у меня есть конструктор в AdvancedEmployee, который принимает параметр Employee как параметр и использует его для ввода своих значений, в основном делая клон.
Update
Для решения данных, которые будут получать дублируются я изменил подход немного и теперь AdvancedEmployee СОДЕРЖИТ работник вместо того, чтобы один сам. Пример:
class Employee;
class AdvancedEmployee
{
private employee
public AdvancedEmployee(Employee employee){
this.employee = employee
}
}
Сделать оба совместимыми с интерфейсом, IEmployee? – SpaceBison
Я не могу изменить Employee. –
@IsraelLot, вы, безусловно, можете подавить на C#. Я подозреваю, что вам просто не хватает синтаксиса: «AdvancedEmployee advanced = (AdvancedEmployee) сотрудник». Конечно, это даст ошибку во время выполнения, если ссылочный объект на самом деле не является экземпляром AdvancedEmployee. – Ben