【发布时间】:2011-03-22 12:14:14
【问题描述】:
如何使用 Castle Windsor(使用代码)配置具有多个具体实现的接口。下面是示例代码。
public interface ICostCalculator
{
double CalculateTotal(Order order);
}
public class DefaultCostCalculator : ICostCalculator
{
public double CalculateTotal(Order order)
{
return
order.Items.Sum(x => x.Product.Rate * x.Quantity);
}
}
ServiceTaxCalculator 实现:
public class ServiceTaxCalculator : ICostCalculator
{
private readonly ICostCalculator calculator;
private double serviveTaxRate = 10.2;
public ServiceTaxCalculator(ICostCalculator calculator)
{
this.calculator = calculator;
}
public double ServiceTaxRate
{
get { return this.serviceTaxRate; }
set { this.serviceTaxRate = value; }
}
public double CalculateTotal(Order order)
{
double innerTotal =
this.calculator.CalculateTotal(order);
innerTotal += innerTotal * servieTaxRate / 100;
return innerTotal;
}
}
我想要基于服务税适用性的具体类的实例。如果适用服务税,我需要ServiceTaxCalculator,否则需要DefaultCostCalculator。
如何使用 Castle Windsor 配置此场景。
【问题讨论】:
-
你怎么知道服务税什么时候适用?
标签: c# dependency-injection castle-windsor