I resolved this by sending all the columns to employee class by just adding
Emptype = EmployeeType.PartTimeEmployee,
and return it to the method.
now my code is :
while (dr.Read())
{
if ((EmployeeType)dr["EmployeeType"] == EmployeeType.FullTimeEmployee)
{
MyEmployee = new FullTimeEmployee()
{
id = Convert.ToInt16(dr[0]),
name = dr["name"].ToString(),
gender = dr["Gender"].ToString(),
dob = Convert.ToDateTime(dr["DateOfBirth"]),
Emptype = EmployeeType.FullTimeEmployee,
AnnualSalary = Convert.ToInt16(dr["AnnualSalary"])
};
}
else
{
MyEmployee = new PartTimeEmployee
{
id = Convert.ToInt16(dr[0]),
name = dr["name"].ToString(),
gender = dr["Gender"].ToString(),
dob = Convert.ToDateTime(dr["DateOfBirth"]),
HourlyRate = Convert.ToInt16(dr["HourlyPay"]),
Emptype = EmployeeType.PartTimeEmployee,
HoursWorked = Convert.ToInt16(dr["HoursWorked"])
};
}
}
}
return MyEmployee;
NOTE:I hope this error is caused by the missing the parameter of the class