using System.Collections;
using System.Collections.Generic;
public static void Main(string[] args)
List<EmployeeTax> employeeList = new List<EmployeeTax>();
employeeList.Add(new MaleEmployeeTax() { Id = 1, Gender = Gender.Male, Name = "MaleEmployee", Salary = 25000, DOB = new DateTime(1991, 10, 10) });
employeeList.Add(new FemaleEmployeeTax() { Id = 2, Gender = Gender.Female, Name = "FemaleEmployee", Salary = 30000, DOB = new DateTime(1995, 10, 10) });
employeeList.Add(new SeniorCitizenEmployeeTax() { Id = 3, Gender = Gender.Male, Name = "SenorCitizen", Salary = 60000, DOB = new DateTime(1965, 10, 10) });
Taxcalculator taxcalculator = new Taxcalculator();
foreach (var employee in employeeList)
taxcalculator.CalculateTax(employee);
public abstract class EmployeeTax
public int Id { get; set; }
public string Name { get; set; }
public Gender Gender { get; set; }
public DateTime DOB { get; set; }
public double Salary { get; set; }
public virtual void CalculateTax()
Console.WriteLine("General tax slabs");
public override string ToString()
return String.Concat(Id, " ", Name, " ", Gender, " ", DOB);
public class Taxcalculator
public void CalculateTax(EmployeeTax employee)
public class FemaleEmployeeTax : EmployeeTax
public override void CalculateTax()
Console.WriteLine("Female tax slab");
Console.WriteLine(this.ToString());
public class MaleEmployeeTax : EmployeeTax
public override void CalculateTax()
Console.WriteLine("Male tax slab");
Console.WriteLine(this.ToString());
public class SeniorCitizenEmployeeTax : EmployeeTax
public override void CalculateTax()
Console.WriteLine("SeniorCitizen tax slab");
Console.WriteLine(this.ToString());
public enum Gender { Male, Female}