public TypePredicatesActor()
{
Receive(typeof(int), i => (int)i < 5, i => Sender.Tell("int<5:" + i, Self)); //Predicate first, when i < 5
Receive(typeof(int), i => Sender.Tell("int<10:" + i, Self), i => (int)i < 10); //Predicate after, when 5 <= i < 10
Receive(typeof(int), o =>
{
var i = (int) o;
if(i < 15)
{
Sender.Tell("int<15:" + i, Self);
return true;
}
return false;
}); //Func, when 10 <= i < 15
Receive(typeof(int), i => Sender.Tell("int:" + i, Self), null); //Null predicate, when i >= 15
Receive(typeof(int), i => Sender.Tell("ShouldNeverMatch:" + i, Self)); //The handler above should never be invoked
Receive(typeof(string), i => Sender.Tell("string:" + i));
}
}