Lambda Properties: Listing 1

Calculating a discount rate.

public class Foo
{
  public Func<Customer, decimal> GetDiscountRate { get; set; }
 
  public Foo()
  {
    this.GetDiscountRate = DefaultDiscountRate;
  }
 
  private decimal DefaultDiscountRate(Customer customer)
  {
    switch (customer.CustomerType)

    {
      case CustomerType.Probation:
        return 0.02m;
 
      case CustomerType.Normal:
        return 0.045m;
 
      case CustomerType.Preferred:
        return 0.07m;
 
      default:
        throw
        new ArgumentException("Unsupported CustomerType");
    }
  }
}

About the Author

Patrick Steele is a senior .NET developer with Billhighway in Troy, Mich. A recognized expert on the Microsoft .NET Framework, he’s a former Microsoft MVP award winner and a presenter at conferences and user group meetings.