Не вызывается метод из базового типа после приведения типов? - C#
Формулировка задачи:
При приведении типов от производного класса Manager к базовому классу Employee, у объекта "e" к которому был приведен Manager, вызывается метод из производного класса.
Почему не вызывается метод из базового типа после приведения?
class Employee{
public int Id { get; set; }
public virtual void Foo(){
Console.WriteLine("Hello Employee");
}
}
class Manager : Employee{
public string Name { get; set; }
public virtual void Foo(){
Console.WriteLine("Hello Manager");
}
}
...
static void Main(){
Manager m = new Manager();
Employee e = m;
e.Id = 10;//объект e содержит собственное свойство Id
e.FirstName = "Foo";//объект e не содержит FirstName, из класса Manager
e.Foo();//output: Hello Manager
Console.WriteLine(e);//output: Manager
}Решение задачи: «Не вызывается метод из базового типа после приведения типов?»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2 {
class Program {
static void Main(string[] args) {
Manager m = new Manager();
Employee e = new Employee();
m.Foo();
((Employee)m).Foo();
}
}
class Employee {
public int Id { get; set; }
public virtual void Foo() {
Console.WriteLine("Hello Employee");
}
}
class Manager : Employee {
public string Name { get; set; }
public new void Foo() {
Console.WriteLine("Hello Manager");
}
}
}