public ConnectionService(ILogger logger, 
            IStateTransitionStrategy stateTransitionStrategy,
            IEventAggregatorService eventAggregatorService,
            IEnumerable<ITestState> testStates)
        {
            _logger = logger;
            _stateTransitionStrategy = stateTransitionStrategy;
            _eventAggregatorService = eventAggregatorService;
            _testStates = testStates;

            Initailise(_stateTransitionStrategy);
            LogCurrentState();
        }
 /// <summary>
 /// TODO move the logic for each strategy into own class, or create different versions of the ConnectionService class?
 /// TODO prefer enum over string name
 /// </summary>        
 private void Initailise(IStateTransitionStrategy stateTransitionStrategy)
 {
     switch(stateTransitionStrategy.Name)
     {
         case "CallbackToController":
             {
                 _currentState = new DisconnectedState(_stateTransitionStrategy);
                 _continue = true;
                 break;
             }
         case "EventAggregator":
             {
                 _currentState = new DisconnectedState(_stateTransitionStrategy);
                 // Subscribe to the event aggregator for state transition events
                 _eventAggregatorService.Subscribe<StateTransitionEventArgs>(OnStateTransitionRequest);
                 _continue = true;
                 break;
             }
         case "RaiseEvent":
             {
                 _currentState = new DisconnectedState(_stateTransitionStrategy);
                 // Subscribe to the state transition for events
                 _stateTransitionStrategy.ChangeState += _stateTransitionStrategy_ChangeState;
                 _continue = true;
                 break;
             }
         case "SequentialState":
             {
                 // Sequential
                 _testStates = _testStates.OrderBy(x => x.Order);
                 _currentState = _testStates.First();
                 _continue = true;
                 break;
             }
         default:
             {
                 _logger.Log("Unknown strategy: " + stateTransitionStrategy.Name);
                 _continue = false;
                 break;
             }
     }
 }
 public DisconnectedState(IStateTransitionStrategy stateTransitionStrategy)
 {
     _stateTransitionStrategy = stateTransitionStrategy;
 }