You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Blazor WebAssembly中如何让WorkDay类调用Job类的PayRate计算税费?

解决方案:在WorkDay中使用Job的PayRate计算税费

要实现WorkDay使用Job的PayRate替代硬编码的15.74,核心是让WorkDay能关联到对应的Job实例,下面提供两种常用实现方式:

方法一:给WorkDay添加Job关联属性

适合WorkDay可能不绑定固定Job的场景,通过属性关联Job,同时处理PayRate为空的情况:

修改后的WorkDay类:

public class WorkDay
{
    // 关联对应的Job实例,允许为空
    public Job? AssociatedJob { get; set; }
    public double Hours { get; set; } 
    public double? Subtotal { get; set; }
    public double TaxRate { get; set; } = 0.1;

    // 计算实际使用的时薪:若Job或PayRate为空, fallback到原硬编码值
    private double EffectivePayRate => AssociatedJob?.PayRate ?? 15.74;

    public double Taxes
    {
        get { return (Hours * EffectivePayRate) * TaxRate; } 
    }
    public double? Final 
    {
        get { return (Hours * EffectivePayRate) - Taxes; }
    }
}

使用示例:

// 创建Job实例
var devJob = new Job("Tech Corp", 22.5);
// 创建WorkDay并关联Job
var mondayWorkDay = new WorkDay { Hours = 8, AssociatedJob = devJob };
// 此时税费和最终薪资会用22.5作为时薪计算
var taxes = mondayWorkDay.Taxes;
var finalPay = mondayWorkDay.Final;

方法二:构造函数强制注入Job

适合每个WorkDay必须属于某个Job的场景,通过构造函数传入Job,避免空关联:

修改后的WorkDay类:

public class WorkDay
{
    private readonly Job _job;
    public double Hours { get; set; } 
    public double? Subtotal { get; set; }
    public double TaxRate { get; set; } = 0.1;

    // 构造函数强制传入Job,不允许为空
    public WorkDay(Job job)
    {
        _job = job ?? throw new ArgumentNullException(nameof(job), "WorkDay必须绑定一个Job实例");
    }

    // 处理PayRate为空的情况,这里用默认值,也可根据业务抛出异常
    private double EffectivePayRate => _job.PayRate ?? 15.74;

    public double Taxes
    {
        get { return (Hours * EffectivePayRate) * TaxRate; } 
    }
    public double? Final 
    {
        get { return (Hours * EffectivePayRate) - Taxes; }
    }
}

使用示例:

var designJob = new Job("Design Studio", 19.8);
var tuesdayWorkDay = new WorkDay(designJob) { Hours = 7.5 };

关键注意点

由于Job的PayRate是double?可空类型,必须处理它为null的场景:

  • 示例中用??运算符设置了默认值15.74,你也可以根据业务需求改为抛出异常(比如_job.PayRate ?? throw new InvalidOperationException("Job未设置时薪"))。

内容的提问来源于stack exchange,提问作者Yekusiel Allen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:22:46