using System;
using System.Windows.Forms;
//控制台模拟移动响应客户请求过程
namespace Test
{
//定义请求类型
public enum RequestType
{
AddMoney,
SelectMoney,
News
};
//通知发生了什么类型请求
public class UserRequestEventArgs:EventArgs
{
private RequestType request;
//构造函数
public UserRequestEventArgs(RequestType request)
{
this.request=request;
}
//设置RequestType变量的只读属性
public RequestType Request
{
get
{
return this.request;
}
}
}
//控制台接受用户输入类
public class UserInput
{
public delegate void UserRequest(object sender,UserRequestEventArgs e);
public event UserRequest OnUserRequest;
//循环接受用户输入
public void Run()
{
while(true)
{
Console.WriteLine("Select what you want to do");
Console.WriteLine("A:Add money");
Console.WriteLine("B:Select How many money left");
Console.WriteLine("C:News");
string UserInputString=Console.ReadLine();
char UserInputChar=(UserInputString=="")?""[0]:char.ToUpper(UserInputString[0]);
switch (UserInputChar)
{
case 'A':
OnUserRequest(this,new UserRequestEventArgs(RequestType.AddMoney));
break;
case 'B':
OnUserRequest(this,new UserRequestEventArgs(RequestType.SelectMoney));
break;
case 'C':
OnUserRequest(this,new UserRequestEventArgs(RequestType.News));
break;
default:
break;
}
}
}
}
//反馈给客户端消息内容的类1
public class MessageDisplay
{
public MessageDisplay(UserInput uInput)
{
uInput.OnUserRequest += new UserInput.UserRequest(uInput_OnUserRequest);
}
private void uInput_OnUserRequest(object sender, UserRequestEventArgs e)
{
switch(e.Request)
{
case RequestType.AddMoney:
Console.WriteLine("Custom want add money");
break;
case RequestType.SelectMoney:
Console.WriteLine("Custom want Select how many money left");
break;
case RequestType.News:
Console.WriteLine("News");
break;
default:
break;
}
}
}
//反馈给客户端消息内容的类2(以此类推,可以为反馈的客户这个事件上加上无穷的动作)
public class MessageDisplay2
{
public MessageDisplay2(UserInput uInput)
{
uInput.OnUserRequest +=new UserInput.UserRequest(uInput_OnUserRequest);
}
private void uInput_OnUserRequest(object sender, UserRequestEventArgs e)
{
if(e.Request==RequestType.News)
{
MessageBox.Show("News start...");
}
}
}
//测试类
class Test
{
[STAThread]
static void Main(string[] args)
{
UserInput uinput=new UserInput();
MessageDisplay mdisplay=new MessageDisplay(uinput);
MessageDisplay2 mdisplay2=new MessageDisplay2(uinput);
uinput.Run();
}
}
}