Работа со словарём 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 это именно премия, а уже второй - ставка, может в этом проблема?

→ Ссылка