示例#1
0
        /// Return InvoicePath Composed Function
        public static Func <Order, Freight> InvoicePathFunc(ProcessConfiguration c, InvoicingPath fpl)
        {
            Func <Order, Freight> p = fpl.InvoiceFunctions.Where((x) => x.InvoiceChoose == c.invoiceChoice).Select((x) => x.CalcInvoice).FirstOrDefault()
                                      .Compose(fpl.ShippingFunctions.Where((x) => x.ShippingChoose == c.shippingChoice).Select((x) => x.calcShipping).FirstOrDefault())
                                      .Compose(fpl.frieghtFunctions.Where((x) => x.freightChoose == c.freightChoice).Select((x) => x.calcFrieght).FirstOrDefault());

            return(p);
        }
示例#2
0
        public static void Main(string[] args)
        {
            InvoicingPath    InvoicePath      = new InvoicingPath();
            AvailabilityPath AvailabilityPath = new AvailabilityPath();

            (Order order, ProcessConfiguration processConfiguration) = setConfiguration();

            Func <Order, Double> CostOfOrder = CalcAdjustedCostofOrder(processConfiguration, InvoicePath, AvailabilityPath);

            Console.WriteLine(CostOfOrder(order));
            Console.ReadLine();
        }
示例#3
0
 //Adjusted Cost for Order
 public static Func <Order, double> CalcAdjustedCostofOrder(ProcessConfiguration c, InvoicingPath InvoicePath, AvailabilityPath AvailabilityPath)
 {
     return((x) => AdjustCost(x, InvoicePathFunc(c, InvoicePath), AvailabilityPathFunc(c, AvailabilityPath)));
 }