public INeedAHandler Is(FeatureSwitchStatus status)
        {
            if (_nextType is null)
            {
                throw new ConfigurationException("No handler has been configured for this feature switch.");
            }

            _switches.Add(_nextType, status);
            _nextType = null;

            return(this);
        }
 /// <summary>
 /// Initialises a new instance of the <see cref="FeatureSwitchAttribute"/> class.
 /// </summary>
 /// <param name="handler">The handler to feature switch</param>
 /// <param name="status">The status of the feature switch</param>
 /// <param name="step">The step.</param>
 /// <param name="timing">The timing.</param>
 public FeatureSwitchAttribute(Type handler, FeatureSwitchStatus status, int step, HandlerTiming timing = HandlerTiming.Before) : base(step, timing)
 {
     _handler = handler;
     _status  = status;
 }
 /// <summary>
 /// Initializes from attribute parameters.
 /// </summary>
 /// <param name="initializerList">The initializer list.</param>
 public override void InitializeFromAttributeParams(params object[] initializerList)
 {
     _handler = (Type)initializerList[0];
     _status  = (FeatureSwitchStatus)initializerList[1];
 }
 public void RegisterHandler(Type handler, FeatureSwitchStatus status)
 {
     _switches.Add(handler, status);
 }