一个C#高级编程中的事件 DEMO 实例
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
///
/// 发生一个事件:用户选择了一个选项
/// 响应是1:用户得到想要的结果
/// 2:老板得到是否有用户在看他的信息
///
/// 即:多点委托[显示结果,提示老板]
///
///
static void Main(string[] args)
{
//UserInputMonitor 的成员userInputRequest 事件
UserInputMonitor uim = new UserInputMonitor();
//为userInputRequest绑定2个方法
UserView uv = new UserView(uim);
person p = new person(uim);
//run方法里面会提示用户来促发userInputRequest 事件
uim.Run();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class UserInputMonitor
{
public delegate void userInputRequest(object send,UserEventArgs e);
public event userInputRequest onUserInputRequest;
public void Run()
{
//不同的促发情况
//UserEventArgs 带上了用户选择的信息
while (true)
{
System.Console.WriteLine("input p:[look personal ]");
System.Console.WriteLine("input c:[look company]");
System.Console.WriteLine("input e:[exit ]");
string input = System.Console.ReadLine();
if (input.ToLower() == "p")
onUserInputRequest(this, new UserEventArgs(RequestType.Personal));
else if (input.ToLower() == "c")
onUserInputRequest(this, new UserEventArgs(RequestType.Company));
else if (input.ToLower() == "e")
return;
else
continue;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
enum RequestType{
Personal,
Company
}
///
/// 携带了用户选择信息的EventArgs
///
class UserEventArgs : EventArgs
{
private RequestType reqType;
public RequestType GetRequestType
{
get
{
return this.reqType;
}
}
public UserEventArgs(RequestType t)
{
this.reqType = t;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
///
/// 绑定一个事件
///
class UserView
{
public UserView(UserInputMonitor uim)
{
uim.onUserInputRequest += new UserInputMonitor.userInputRequest(uim_onUserInputRequest);
}
protected void uim_onUserInputRequest(object send, UserEventArgs e)
{
if (e.GetRequestType == RequestType.Company)
System.Console.WriteLine("company is best!!");
if(e.GetRequestType == RequestType.Personal)
System.Console.WriteLine("he is chinese!!");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
///
/// 绑定一个事件
///
class person
{
public person(UserInputMonitor uim)
{
uim.onUserInputRequest += new UserInputMonitor.userInputRequest(uim_onUserInputRequest);
}
protected void uim_onUserInputRequest(object send, UserEventArgs e)
{
if (e.GetRequestType == RequestType.Personal)
System.Console.WriteLine("somebody miss u!!");
}
}
}