public Box WrapProduct_2(IProductFactory iProductFactory)
 {
     Box box = new Box();
     Product product = iProductFactory.Make();
     box.Product = product;
     return box;
 }
 public Box WrapProduct(Func<Product> getProduct, Action<Product> logCallBack)
 {
     Box box = new Box();
     Product product = getProduct.Invoke();
     if (product.Price >= 50)
     {
         logCallBack(product);
     }
     box.Product = product;
     return box;
 }