【发布时间】:2015-03-02 15:45:32
【问题描述】:
我正在学习以下课程。我以缩短属性列表为例。
public class Paycheck
{
public decimal Gross { get; private set; }
public decimal FederalWithholdingTax { get; private set; }
public decimal StateWithholdingTax { get; private set; }
// ...
}
现在我的想法是创建一个界面来计算所有税收......
public interface IPaycheckDeductionCalculator
{
void Calculate();
}
之后的想法是在 Paycheck 类之外创建可以执行计算/扣除的方法。随着法律和工资核算流程的运作方式,扣除的执行方式和扣除的内容不断变化,因此我希望保持易于扩展。
我的困境是我想让 Paycheck 属性设置器保持私有,以便任何人都可以更改这些值。在处理完薪水后保持该数据不变是至关重要的。
我考虑过使用委托,但我也不确定这是否是我的答案,因为我仍然无法在 Paycheck 类之外开发所需的方法。
有什么我没有想到的,或者这是“你不能吃蛋糕也不能吃”的情况?
【问题讨论】:
-
能否创建一个实现该接口的类,然后在
Calculate方法中实例化一个Paycheck类,从而通过Paycheck构造函数初始化值? -
我考虑过这一点,但是我必须为每个属性初始化一个新类,然后我必须有某种方法将所有这些类减少到一个。 Calculate 方法只负责计算 Paycheck 类的一个属性。
标签: c# interface delegates extensibility