适合C# Actor的消息执行方式(3):中看不中用的解决方案
2010-09-30 20:50:26 来源:WEB开发网Action<IDoHandler> m = x => x.Do(0, 1, 2, ...);
好,那么我们还是用乒乓测试来尝试一番。我们知道,乒乓测试会让Ping对象和Pong对象相互发送消息,我们各使用一个“消息组”,也就是“接口”来定义消息:
public interface IPongMessageHandler { }
public interface IPingMessageHandler { }
那么,Ping和Pong两个Actor类型又该如何定义呢?我们知道,Ping需要处理Pong发来的消息,因此它需要实现IPongMessageHandler接口,并且需要接受类型为Action<IPongMessageHandler>的消息。Pong与Ping类似,因此它们的定义为:
public class Ping : Actor<Action<IPongMessageHandler>>, IPongMessageHandler
{
private int m_count;
public Ping(int count)
{
this.m_count = count;
}
protected override void Receive(Action<IPongMessageHandler> message)
{
message(this);
}
...
}
public class Pong : Actor<Action<IPingMessageHandler>>, IPingMessageHandler
{
protected override void Receive(Action<IPingMessageHandler> message)
{
message(this);
}
...
}
从代码上看,实际操作中我们并不需要让Ping或Pong直接继承Handler接口,只要最终提供一个对象给message执行即可。严格说来,“接口”只是一个“消息组”,具体的“消息”还是要落实到接口中的方法。定义了Ping和Pong之后,我们便可以明确接口中的方法了(确切地说,是明确了方法的参数):
- ››适合做商品团购营销的网站
- ››适合所有浏览器hack的CSS技巧
- ››消息称中国移动即将获得iPhone 4销售权
- ››适合C# Actor的消息执行方式(1):Erlang中的模式...
- ››适合C# Actor的消息执行方式(2):C# Actor的尴尬...
- ››适合C# Actor的消息执行方式(3):中看不中用的解...
- ››适合C# Actor的消息执行方式(4):阶段性总结
- ››适合C# Actor的消息执行方式(5):一个简单的网络...
- ››适合C# Actor的消息执行方式(6):协变与逆变
- ››适合1-5个月经验的seo优化全过程分享
- ››消息称联通高层赴美谈引入iPhone4 将带WiFi
- ››消息称微软将在近期发布IE9 beta
更多精彩
赞助商链接