public void ProcessOrder(OrderInfo orderInfo) { _BillingProcessor.ProcessPayment(orderInfo.CustomerName, orderInfo.CreditCard, orderInfo.Price); _Logger.Log("Billing processed"); _Customer.UpdateCustomerOrder(orderInfo.CustomerName, orderInfo.Product); _Logger.Log("Customer updated"); _Notifier.SendReceipt(orderInfo); _Logger.Log("Receipt sent"); }
static void Main(string[] args) { Container = new UnityContainer(); Container.RegisterType<IBillingProcessor, BillingProcessor>(); Container.RegisterType<ICustomer, Customer>(); Container.RegisterType<INotifier, Notifier>(); Container.RegisterType<ILogger, Logger>(); #region factory Container.RegisterType<IBillingProcessorFactory, UnityBillingProcessorFactory>(); #endregion Console.WriteLine("Unity DI Container Example"); Console.WriteLine(); OrderInfo orderInfo = new OrderInfo() { CustomerName = "Miguel Castro", Email = "*****@*****.**", Product = "Laptop", Price = 1200, CreditCard = "1234567890" }; Console.WriteLine("Production:"); Console.WriteLine(); Commerce commerce = Container.Resolve<Commerce>(); commerce.ProcessOrder(orderInfo); Console.WriteLine(); Console.WriteLine("Press [Enter] to exit..."); Console.ReadLine(); }
void INotifier.SendReceipt(OrderInfo orderInfo) { // send email to customer with receipt Console.WriteLine(string.Format("Receipt sent to customer '{0}' via email.", orderInfo.CustomerName)); }