using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Test_TestJavascript_TestDele : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btDelegate_Click(object sender, EventArgs e)
{
}
}
//--------------------------------------------------------------------------------------------------------------------
//http://www.pconline.com.cn/pcedu/empolder/net/0603/765619_1.html
//讲故事谈.NET委托:一个C#睡前故事
public class worker : System.Web.UI.Page
{
public void Advise(Boss boss)
{
this._boss = boss;
}
public void DoWork()
{
if (_boss != null)
{
_boss.WorkStarted();//transer boss\'s methods to tell boss
}
if (_boss != null)
{
_boss.WorkProgressing();
}
if (_boss != null)
{
_boss.WorkCompleted();
}
}
private Boss _boss;
}
public class Boss : System.Web.UI.Page
{
public void WorkStarted() { /* 老板不关心。 */ }
public void WorkProgressing() { /*老板不关心。 */ }
public int WorkCompleted()
{
Response.Write("hao i know");
return 2; //总分为10
}
}
public class Universe : System.Web.UI.Page
{
public void Main()
{
Worker peter = new Worker();
Boss boss = new Boss();
peter.Advise(boss);
peter.DoWork();
Response.Write("completed");
}
}
//----------------------------------------------------------------------------------------------------------------------
interface IWorkEvents
{
void WorkStarted();
void WorkProgressing();
int WorkCompleted();
}
public class workerInterface : System.Web.UI.Page
{
public void Advise(IWorkEvents events)
{
_events = events;
}
public void DoWork()
{
if (_events != null)
{
_events.WorkStarted();
}
if (_events != null)
{
_events.WorkProgressing();
}
if (_events != null)
{
_events.WorkCompleted();
}
}
private IWorkEvents _events;//////
}
public class BossInterface : System.Web.UI.Page, IWorkEvents/////
{
public void WorkStarted() { /* 老板不关心。 */ }
public void WorkProgressing() { /*老板不关心。 */ }
public int WorkCompleted()
{
Response.Write("hao i know");
return 3; //总分为10
}
}
//--------------------------------------------------------------------------------------------delegate
delegate void WorkStarted();//public
delegate void WorkProgressing();
delegate int WorkCompleted();
public class workerdelegate : System.Web.UI.Page
{
public void DoWork()
{
if (Started != null)
{
Started();
}
if (Processing != null)
{
Processing();
}
if (Complated != null)
{
Complated();
}
}
private WorkStarted Started;
private WorkProgressing Processing;
private WorkCompleted Complated;
}
public class Bossdelegate : System.Web.UI.Page /////
{
public int WorkCompleted()
{
Response.Write("hao i know");
return 3; //总分为10
}
}
public class Universedelegate
{
public void Main()
{
workerdelegate peter = new workerdelegate ();
Bossdelegate boss = newBossdelegate();
peter.completed = new WorkCompleted(boss.WorkCompleted);//relative with delegate
peter.DoWork();
Response.Write("complated");
}
}
public class UniversedelegateStatic
{
static void WorkerStartedWork()
{
Response.Write("Universe notices worker starting work");
}
static int WorkerCompletedWork()
{
Response.Write("Universe pleased with worker\'s work");
return 7;
}
static void Main()
{
workerdelegate peter = new workerdelegate();
Bossdelegate boss = new Bossdelegate();
peter.completed = new WorkCompleted(boss.WorkCompleted);
peter.started = new WorkStarted(UniversedelegateStatic.WorkerStartedWork);
peter.completed = new WorkCompleted(UniversedelegateStatic.WorkerCompletedWork);//remind of it peter\'s methods is delegated
peter.DoWork();
Response.Write("Main: 工人工作完成");
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------
//delegate void WorkStarted();//public
//delegate void WorkProgressing();
//delegate int WorkCompleted();// Still need ,view them upward
public class workerdelegateEvent : System.Web.UI.Page
{
public void DoWork()
{
if (Started != null)
{
Started();
}
if (Processing != null)
{
Processing();
}
if(completed !=null)
{
foreach (WorkCompleted wc in completed.GetInvocationList())
{
int grade = wc();
Response.Write("Main: 工人工作完成, get grade:"+grade);
}
}
}
public event WorkStarted started;
public event WorkProgressing progressing;
public event WorkCompleted completed;
}
public class UniversedelegateStaticEvent
{
static void WorkerStartedWork()
{
Response.Write("Universe notices worker starting work");
}
static int WorkerCompletedWork()
{
Response.Write("Universe pleased with worker\'s work");
return 7;
}
static void Main()
{
workerdelegate peter = new workerdelegate();
Bossdelegate boss = new Bossdelegate();
peter.completed += new WorkCompleted(boss.WorkCompleted);
peter.started += new WorkStarted(UniversedelegateStatic.WorkerStartedWork);
peter.completed += new WorkCompleted(UniversedelegateStatic.WorkerCompletedWork);//remind of it peter\'s methods is delegated
peter.DoWork();
Response.Write("Main: 工人工作完成");
}
}