WEB开发网
开发学院软件开发C语言 适合C# Actor的消息执行方式(3):中看不中用的解... 阅读

适合C# Actor的消息执行方式(3):中看不中用的解决方案

 2010-09-30 20:50:26 来源:WEB开发网   
核心提示: Action<IDoHandler>m=x=>x.Do(0,1,2,...);好,那么我们还是用乒乓测试来尝试一番,适合C# Actor的消息执行方式(3):中看不中用的解决方案(3),我们知道,乒乓测试会让Ping对象和Pong对象相互发送消息,具体的“消息&rd

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之后,我们便可以明确接口中的方法了(确切地说,是明确了方法的参数):

上一页  1 2 3 4 5 6  下一页

Tags:适合 Actor 消息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接