public static string Name { get; set; }
public static int Age { get; set; }
public static string Gender { get; set; }
public static double Salary { get; set; }
public static void Main(string[] args)
Console.WriteLine("Enter your Name: ");
Name = Console.ReadLine();
Console.WriteLine("Enter your date of birth in 'mm/dd/yyyy' format: ");
DateTime.TryParse(Console.ReadLine(), out dateTime);
Age = DateTime.Today.Year - dateTime.Year;
Console.WriteLine("Enter your Gender: ");
Gender = Console.ReadLine();
Console.WriteLine("Enter your Salary: ");
Salary = double.Parse(Console.ReadLine());
Console.WriteLine("Minor dont need to pay taxes.");
if (!string.IsNullOrEmpty(Name) && Age > 18 && Salary > 0)
var tax = new TaxCalculator();
Console.WriteLine("Tax you need to pay is: " + tax.CalculateTax(Gender, Age, Salary));
Console.WriteLine("\nDo you want to continue: (y/n) ");
if (Console.ReadLine() == "n")
Console.WriteLine("EXCEPTION: " + ex.Message, ex.InnerException);
class TaxCalculator : TaxPayerInfo
public override double CalculateTax(string gender, int age, double salary)
return base.CalculateTax(gender, age, salary);
public virtual double CalculateTax(string gender, int age, double salary)
gender = gender.ToLower();
if (gender == "male" && age >= 18 )
if (gender == "female" & age >= 18)
Console.WriteLine("Cannot calculate Tax: " + ex.Message);