public static async Task Run(IAsyncAdapter <Ledger> adapter) { // Making a deposit decimal balance = await adapter.Call(ledger => { ledger.Credit(new Random().Next(5, 15), "deposit"); return(ledger.Balance); }); Console.WriteLine("Balance: {0:0.00}", balance); // Withdrawing spending money depending on balance and checking resulting balance "atomically" // can return or capture variables (but capturing the ledger would defeat the puporse of the adapter) decimal spendingMoney = 0; await adapter.Call(ledger => { if (ledger.Balance > 10) { spendingMoney = 10; } else { spendingMoney = 5; } ledger.Debit(spendingMoney, "wastin money"); balance = ledger.Balance; }); Console.WriteLine("withdrew: {0:0.00}", spendingMoney); Console.WriteLine("balance: {0:0.00}", balance); }
public static async Task Run(IAsyncAdapter<Ledger> adapter) { // Making a deposit decimal balance = await adapter.Call(ledger => { ledger.Credit(new Random().Next(5, 15), "deposit"); return ledger.Balance; }); Console.WriteLine("Balance: {0:0.00}", balance); // Withdrawing spending money depending on balance and checking resulting balance "atomically" // can return or capture variables (but capturing the ledger would defeat the puporse of the adapter) decimal spendingMoney = 0; await adapter.Call(ledger => { if(ledger.Balance > 10) { spendingMoney = 10; } else { spendingMoney = 5; } ledger.Debit(spendingMoney, "wastin money"); balance = ledger.Balance; }); Console.WriteLine("withdrew: {0:0.00}", spendingMoney); Console.WriteLine("balance: {0:0.00}", balance); }
public static void RegisterAdapter(Type queryProviderType, IAsyncAdapter adapter) { RegisterAdapter(type => queryProviderType.IsAssignableFrom(type), adapter); }
public static void RegisterAdapter(Func <Type, bool> queryProviderTypePredicate, IAsyncAdapter adapter) { _registeredAdapters.Add(Tuple.Create(queryProviderTypePredicate, adapter)); }