标题几乎说明了一切。我想从一个非Actor类中调用一个Actor类中的Action,该非Actor类与Actor不在同一文件夹中。
在演员模型中,您不会在演员上“调用动作”。您可以询问某些东西或tell某些东西。为此,您需要演员的地址,在akka.net中,您需要IActorRef
。
我不确定您所说的“文件夹”是什么意思,我只列举可能的含义和每种方法的答案:
为了能够向演员发送消息,您只需要它是IActorRef
,有很多方法可以管理那些我在这里不写的引用,因为这取决于您的应用程序体系结构。
但是,我将提到您还可以使用ActorSystem.ActorSelection
方法来获取位于某个path上的actor的引用,但是建议not,因为它可能很容易滥用,会导致一些不良习惯。它的用法应被视为高级功能。
一旦获得了actor参考,您就可以从非actor类中调用Ask
方法,如果您希望得到一些结果(请注意,结果将包装在必须管理的Task中)检索结果)。如果您不希望得到答案(或者您不关心响应),则可以只调用Tell
方法。您必须将消息传递给发送给Actor的这两种方法。
最后,当actor收到您的消息后,您的消息将最终被处理,然后actor将执行其设计要执行的任何操作。
如果尚未完成,bootcamp是学习akka.net基础的好方法。