Using system; using system.collections;
A summary description of Namespace ConsoleApplication1 {///
/// summary> class DBConnection {protected static int NextConnectionNbr = 1; protected string connectionName; public string ConnectionName {get {return connectionName;}} public DBConnection () {connectionName = "Database Connection" DBConnection.NextConnectionNbr ;}} class DBManager {protected ArrayList activeConnections; public DBManager () {activeConnections = new ArrayList (); for (int i = 0; i <5; i ) {this.activeConnections.Add (new DBConnection ());}} public delegate void EnumConnectionsCallback (DBConnection connection); public void EnumConnections (EnumConnectionsCallback callback) {foreach (DBConnection connection in activeConnections) {callback (connection);}}} public class DelegateEvent {// the delegate definition uses static DBManager.EnumConnectionsCallback printConnections together are static methods = New ConsoleApplication1.dbManager.enumConnectionsCallback (PrintConnections); // Defines a delegated recipient method static void PrintConnections (DBConnection Connecti on) {Console.WriteLine ( "[InstanceDelegate] .PrintConnections {0}", connection.ConnectionName);} // public static void InstanceDelegate general example delegate () {DBManager dbManager = new DBManager (); Console.WriteLine ( " [Main] Instantiating the " " delegate method "); DBManager.EnumConnectionsCallback printConnections = new ConsoleApplication1.DBManager.EnumConnectionsCallback (DelegateEvent.PrintConnections); Console.WriteLine (" [Mani] Calling EnumConnections " " -passing the delegate "); DBManager.enumConnections (PrintConnections); console.readline ();
} // delegate is declared static member public static void StaticDelegate () {DBManager dbManager = new DBManager (); Console.WriteLine ( "[Mani] Calling EnumConnections" "-passing the delegate"); dbManager.EnumConnections (printConnections) ; Console.ReadLine ();} // Create a delegate if necessary, to define a method for obtaining characteristic DBManager.EnumConnectionsCallback PrintConnectionsProperty {get {return new DBManager.EnumConnectionsCallback (PrintConnections);}} // delegate property public static void DelegateProperty () { DelegateEvent app = new DelegateEvent (); DBManager dbManager = new DBManager (); Console.WriteLine ( "[Main] Calling EnumConnections -" "passing the delegate"); dbManager.EnumConnections (app.PrintConnectionsProperty);} public static void Main () {// instancedelegate (); // staticDelegate (); delegateproperty ();
}}}