|
namespace MyMagellanApp.Features.Tax.Model
{
public class TaxEstimator : ITaxEstimator
{
private readonly TaxBracketSelector _bracketSelector;
private readonly ITaxModifier[] _modifiers;
public TaxEstimator(TaxBracketSelector bracketSelector, params ITaxModifier[] modifiers)
{
_bracketSelector = bracketSelector;
_modifiers = modifiers;
}
public TaxEstimate Estimate(Situation situation)
{
var estimate = new TaxEstimate(situation);
var bracket = _bracketSelector.SelectBracket(situation);
estimate.TaxOnIncome = bracket.CalculateTaxPayable(situation);
foreach (var modifier in _modifiers)
{
modifier.Apply(estimate);
}
return estimate;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
My name is
Paul Stovell. I live in Brisbane and develop an automated release management product,
Octopus Deploy. Prior to working on Octopus I worked for an investment bank in London, and for
Readify. I also work on
a few open source projects. I am a Microsoft MVP for Client Application Development.