public sealed class ActorId
public ActorId(int val) => Value = val;
public interface IActorId
public class CoyoteActorId : IActorId
private ActorId _actorId;
public CoyoteActorId(ActorId id)
public int Value => _actorId.Value;
public class TestActorId : IActorId
private int GenerateUniqueId() => 0;
_value = GenerateUniqueId();
public int Value => _value;
public interface IActorCreator
IActorId CreateMachine();
public static class CoyoteFrameworkBits
public static ActorId CreateMachine() => new ActorId(0);
public class CoyoteActorCreator : IActorCreator
public IActorId CreateMachine()
ActorId id = CoyoteFrameworkBits.CreateMachine();
return new CoyoteActorId(id);
public class TestActorCreator : IActorCreator
public IActorId CreateMachine() => new TestActorId();
public static void Main()
IActorCreator myActorCreator = new TestActorCreator();
IActorId id = myActorCreator.CreateMachine();
myActorCreator = new CoyoteActorCreator();
id = myActorCreator.CreateMachine();