/// <summary>
 /// Creates a new <see cref="TypeConfiguration"/>.
 /// </summary>
 /// <param name="type">Type.</param>
 /// <param name="action">Action to perform.</param>
 /// <param name="scanningStrategy">Scanning strategy.</param>
 public TypeConfiguration( Type type, Action<Type> action, ScanFor scanningStrategy )
 {
     Type = type;
     Action = action;
     ScanningStrategy = scanningStrategy;
 }
        /// <summary>
        /// Specifies the scanning option.
        /// </summary>
        /// <param name="scanFor">Scanning option.</param>
        /// <returns>The current <see cref="TypeConfiguration"/>.</returns>
        public TypeConfiguration WithScanningStrategy( ScanFor scanFor )
        {
            switch ( scanFor )
            {
                case ScanFor.TypesThatAreDecoratedWithThisAttribute:
                    ScanForTypesThatAreDecoratedWithThisAttribute();
                    break;
                case ScanFor.TypesThatImplementThisInterface:
                    ScanForTypesThatImplementThisInterface();
                    break;
                case ScanFor.TypesThatInheritFromThisClass:
                    ScanForTypesThatInheritFromThisClass();
                    break;
                case ScanFor.TypesThatInheritFromThisAbstractClass:
                    ScanForTypesThatInheritFromThisAbstractClass();
                    break;
                default:
                    _typeConfiguration.ScanningStrategy = ScanFor.AllTypes;
                    break;
            }

            return _typeConfiguration;
        }