Tuesday, May 26, 2009

C# Delegates - Example...

First u have a Subscriber Class

//Subscriber.cs

using System;
public class Subscriber{
public void GreaterThanHundred(Numbers source){
Console.WriteLine("*****GreaterThanHundred "+source.Num);
}
public void LessThanZero(Numbers source){
Console.WriteLine("*****LessThanZero "+source.Num);
}
public void ValueUpdated(Numbers source){
Console.WriteLine("*****ValueUpdated "+source.Num);
}
public void LogChange(Numbers source){
Console.WriteLine("*****LogChange "+source.Num);
}

}

//Numbers.cs

public delegate void Numberdel(Numbers source);

public class Numbers{

//attributes
private int num=70;

//events
public Numberdel ValueChanged;
public Numberdel LargeNumber;
public Numberdel NegativeNumber;

//properties

public int Num{
get{
 return num;
}
set{
if (0==value)
return;
num+=value;
ValueChanged(this);//raise an event
if(num>100)
LargeNumber(this);//raise an event
if(num<0)
NegativeNumber(this);//raise an event
}
}
}

Atlast u hav Mediator Class

//Mediator.cs

public class Mediator{
  public static void Main(System.String[] args){
Numbers obj= new Numbers();
Subscriber s=new Subscriber();
obj.ValueChanged=new Numberdel(s.ValueUpdated);
obj.ValueChanged+=new Numberdel( s.LogChange);
obj.LargeNumber=new Numberdel(s.GreaterThanHundred);
obj.NegativeNumber=new Numberdel(s.LessThanZero);
obj.Num=int.Parse(args[0]);

  }
  
 }