public static void Main()
Account acc = new Account(1000);
acc.TransactionEvent += new TransactionHandler(SendNotification);
public static void SendNotification(object sender,TransactionEventArgs args)
Console.WriteLine("Event Occured: Amount: "+args.Amount+" Balance: "+args.Balance);
public delegate void TransactionHandler(object sender, TransactionEventArgs args);
public event TransactionHandler TransactionEvent;
private decimal _balance;
public Account(decimal balance)
public void Debit(int amount)
var args=new TransactionEventArgs();
OnTransactionEventRaised(args);
public void Credit(decimal amount)
var args= new TransactionEventArgs();
OnTransactionEventRaised(args);
public void OnTransactionEventRaised(TransactionEventArgs e)
if(TransactionEvent !=null)
TransactionEvent(this,e);
public class TransactionEventArgs:EventArgs{
public decimal Balance{get;set;}
public decimal Amount{get;set;}
public string TransactionType{get;set;}