Работа со словарём C#
Нужно создать абстрактный класс работника, а после на его основе класс работника с фиксированной з/п. Почему в salary в итоге не учитывает wagef и выдаёт salary, состоящую только из бонуса?
public enum JobTitle
{
None, // Должности
Manager,
Director,
Janitor,
Financier
}
public abstract class Worker
{
private static readonly Dictionary<JobTitle, double> bonuses = new Dictionary<JobTitle, double>
{
[JobTitle.Manager] = 1000, // Премии
[JobTitle.Director] = 2000,
[JobTitle.Janitor] = 500,
[JobTitle.Financier] = 1500
};
protected double bonus;
protected JobTitle jobtitle;
public string? name { get; set; }
public string? date { get; set; }
public int id { get; set; }
protected Worker() { }
protected Worker(JobTitle jt, string? name, string? date, int id)
{
JT = jt;
this.name = name;
this.date = date;
this.id = id;
}
public JobTitle JT
{
get { return jobtitle; }
set { jobtitle = value; bonus = bonuses[jobtitle]; }
}
public abstract double salary { get; }
public override string ToString()
{
return String.Format("ID:{0} | ФИО:{1} | Дата рождения:{2} | Зарплата:{3}",id,name,date,salary );
}
}
}
public class WorkerF : Worker
{
private static readonly Dictionary<JobTitle, double> Wages = new Dictionary<JobTitle, double>
{
[JobTitle.Manager] = 100, // Ставка
[JobTitle.Director] = 200,
[JobTitle.Janitor] = 300,
[JobTitle.Financier] = 400,
};
public WorkerF() { }
private JobTitle _WageF;
protected double wagef;
public WorkerF(JobTitle jt, string? name, string? date, int id, JobTitle wage): base(jt, name, date, id)
{
WageF = wage;
}
protected JobTitle WageF
{
get { return _WageF; }
set { _WageF = value; wagef = Wages[_WageF]; }
}
public override double salary
{
get { return bonus+wagef; }
}
}
}
Ответы (1 шт):
Автор решения: immorom
→ Ссылка
WorkerF worker = new WorkerF(JobTitle.Director, "Nikita", "14.12.2022", 0, JobTitle.Manager);
Console.WriteLine(worker.ToString());
Выводит 2100, то есть премия директора со ставкой менеджера. Первый JobTitle в конструкторе WorkerF это именно премия, а уже второй - ставка, может в этом проблема?