Załóżmy, że mam dwie klasy:instancja podstawa do klasy pochodnej (przygnębiony) w C#
class Employee
i
class AdvancedEmployee:Employee
wiem, coś takiego nie będzie działać, ponieważ nie mogę downcast na C#:
var employee = new Employee();
var advanced = employee as AdvancedEmployee;
Moje pytanie brzmi: jak osiągnąć downcast w efektywny sposób? W rzeczywistości mam konstruktor na AdvancedEmployee, który pobiera pracownika jako parametr i użyć go do wstrzyknięcia jego wartości, w zasadzie tworzenia klonu.
Aktualizacja
Aby rozwiązać te dane, które dostanie kopiowane zmieniłem podejście trochę i teraz AdvancedEmployee ZAWIERA pracownika raczej niż jeden sam. Przykład:
class Employee;
class AdvancedEmployee
{
private employee
public AdvancedEmployee(Employee employee){
this.employee = employee
}
}
Czy oba są zgodne z interfejsem, IEmployee? – SpaceBison
Nie mogę zmodyfikować pracownika. –
@IsraelLot, na pewno można downcast w C#. Podejrzewam, że po prostu brakuje ci składni: 'AdvancedEmployee advanced = (AdvancedEmployee) employee;' Oczywiście spowoduje to błąd czasu wykonania, jeśli odwoływany obiekt nie jest w rzeczywistości instancją AdvancedEmployee. – Ben