public virtual void SaveRetry(Invoice invoice) { // fails first time if(!_isRetry) { _isRetry = true; throw new DataException(); } }
static void Main(string[] args) { var proxyGenerator = new ProxyGenerator(); var invoiceService = proxyGenerator .CreateClassProxy<InvoiceService>( new TransactionWithRetries(3)); var invoice = new Invoice { InvoiceId = Guid.NewGuid(), InvoiceDate = DateTime.Now, Items = new List<string> { "Item1","Item2","Item3" } }; invoiceService.Save(invoice); //invoiceService.SaveRetry(invoice); //invoiceService.SaveFail(invoice); Console.WriteLine("Save successful"); }
public virtual void SaveFail(Invoice invoice) { // always fails throw new DataException(); }
public virtual void Save(Invoice invoice) { // always succeeds }