Согласно моему пониманию, если у меня есть ссылочный переменная, указывающая тип родительского класса для объекта класса ребенок:Возможно ли получить доступ к элементам дочернего класса, которые не относятся к родительскому классу из ссылочной переменной типа родительского класса, указывающей на объект дочернего класса?
ParentClass obj= new ChildClass();
obj.OnlyMembersThatHavebeenDerivedFromParentAreAvailable// am i wrong?
В приведенном ниже примере, который я взял из click here я не должен быть в состоянии получить доступ AnnualSalary
производный класс:
public class FullTimeEmployee : Employee
{
public int AnnualSalary { get; set; }
}
производный класс:
public class PartTimeEmployee : Employee
{
public int HourlyPay { get; set; }
public int HoursWorked { get; set; }
}
Родитель Класс
public class Employee
{
private int _id;
private string _name;
private string _gender;
private DateTime _dateOfBirth;
[DataMember(Order = 1)]
public int Id
{
get { return _id; }
set { _id = value; }
}
[DataMember(Order = 2)]
public string Name
{
get { return _name; }
set { _name = value; }
}
[DataMember(Order = 3)]
public string Gender
{
get { return _gender; }
set { _gender = value; }
}
[DataMember(Order = 4)]
public DateTime DateOfBirth
{
get { return _dateOfBirth; }
set { _dateOfBirth = value; }
}
[DataMember(Order = 5)]
public EmployeeType Type { get; set; }
}
Как следующий код действителен? :
Employee employee = null;
employee = new FullTimeEmployee
{
Id = Convert.ToInt32(reader["Id"]),
Name = reader["Name"].ToString(),
Gender = reader["Gender"].ToString(),
DateOfBirth = Convert.ToDateTime(reader["DateOfBirth"]),
Type = EmployeeType.FullTimeEmployee,
AnnualSalary = Convert.ToInt32(reader["AnnualSalary"]) // how is AnnualSalary available here?
};
У вас возникли проблемы с этим? Скомпилирует ли он? –
Я не воссоздал это в визуальной студии. Я смотрел видео-учебник из этого же блогера (использует тот же самый код, который находится в этом блоге), и он смог успешно скомпилировать и запустить его. Так что да, он компилируется. Но как получилось? – Arbaaz