WEB开发网
开发学院软件开发C语言 适合C# Actor的消息执行方式(6):协变与逆变 阅读

适合C# Actor的消息执行方式(6):协变与逆变

 2010-09-30 20:50:09 来源:WEB开发网   
核心提示: 当调用Start方法时,控制台将会等待用户敲击回车键,适合C# Actor的消息执行方式(6):协变与逆变(7),当按下回车键时,TestStatisticPort将会向Monitor发送一个IStatisticRequestHandler.GetCrawledCount消息,我们在使用接口作为

当调用Start方法时,控制台将会等待用户敲击回车键。当按下回车键时,TestStatisticPort将会向Monitor发送一个IStatisticRequestHandler.GetCrawledCount消息。Monitor回复之后,屏幕上便会显示当前已经抓取成功的URL数目。例如,我们可以编写如下的测试代码:

static void Main(string[] args) 
{ 
  var monitor = new Monitor(5); 
  monitor.Post(m => m.Crawl("http://www.cnblogs.com/")); 
 
  TestStatisticPort testPort = new TestStatisticPort(monitor); 
  testPort.Start(); 
}

随意敲击几下回车,结果如下:

适合C# Actor的消息执行方式(6):协变与逆变 总结

如今的做法,兼顾了强类型检查,并使用C# 4.0中的协变和逆变特性,把上一篇文章中提出的问题解决了,不知您是否理解了这些内容?只可惜,我们在C# 3.0中还没有协变和逆变。因此,我们还必须思考一个适合C# 3.0的做法。

顺便一提,由于F#不支持协变和逆变,因此本文的做法无法在F#中使用。

注1:

关于协变和逆变特性,我认为脑袋兄的这篇文章讲的非常清楚——您看得头晕了?是的,刚开始了解协变和逆变,以及它们之间的嵌套规则时我也头晕,但是您在掌握之后就会发现,这的确是一个非常有用的特性。

注2:

不知您是否发现,与之前internal的Crawl相关接口不同,Statistic相关接口是public的。我们在使用接口作为消息时,也可以通过这种办法来控制哪些消息是可以对外暴露的。这也算是一种额外的收获吧。

本文完整代码:http://gist.github.com/160043

出处:http://www.cnblogs.com/JeffreyZhao/archive/2009/08/03/message-execution-model-for-c-sharp-actor-6-covariance-and-contravariance.html

上一页  2 3 4 5 6 7 

Tags:适合 Actor 消息

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