如何保持私有属性的可扩展性?

时间:2015-03-02 15:45:33

标签: c# interface delegates extensibility

我正在上下课。我已将缩短的属性列表作为示例。

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课程之外开发所需的方法。< / p>

我有没有想到的东西,或者这是一个&#34;你不能吃蛋糕,也不能吃它&#34;那种情况?

1 个答案:

答案 0 :(得分:1)

让计算这些值的接口返回它们正在计算的值。将这些接口的实例传递给Paycheck,它可以执行计算(无需了解接口的实现),然后设置相应属性的值。