我正在为这个对我来说新的 Delegates + Handlers 事情而苦苦挣扎。这对我来说似乎是正确的解决方案,但我无法将所有内容都捆绑起来。
将尽我所能解释我想要实现的目标。
首先,我使用的是.NET 4.0 Framework + Photon Server(多人游戏)(不需要有Photon经验才能回答我)
所以实际上,现在发生的是客户端(一个游戏)向我的服务器发送操作,我必须根据我收到的操作码识别并调用我的服务器上的某个函数。
这是它现在的样子:
switch (operationRequest.OperationCode)
{
case 1:
if (operationRequest.Parameters.ContainsKey(1))
{
Log.Debug("Received: " + operationRequest.Parameters[1]);
OperationResponse response = new OperationResponse(operationRequest.OperationCode);
response.Parameters = new Dictionary<byte, object> {{1, "Response Received"}};
SendOperationResponse(response, sendParameters);
Flush();
}
break;
}
这对我来说实际上很好。但是,我确信会有 200 多个操作代码。切换所有这些并不是很好,最好调用分配给该操作代码的函数(处理程序)。
据我所知,委托在这里派上用场。
我想要一个存储“字节,处理程序”的字典
where "byte" is operation code
where "Handler" is a delegate to the function
我假设这样的事情:
byte operationCode = operationRequest.OperationCode;
if(dictionary.ContainsKey((operaionCode)) {
dictionary[operationCode](someArguments);
}
从这一点来看,我完全糊涂了。
如何创建这样的字典,如何创建处理程序,假设我想将它们存储在不同的类中,如何委托它们并存储在字典中。
这是我朋友建议我的(然后消失了一周,所以我不能再问他了):
创建字典
Dictionary<byte, name> = new Dictionary<byte, name>();
将处理程序添加到该字典
dict.Add(operationCode, MoveUnit);
初始化代表(在哪里!?)
???
定义你的处理程序
private void MoveUnit(SendParameters sendParameter) {...}
如果..任何人,任何机会,得到这个想法,请帮助我。
感谢大家花时间阅读本文。:|