public static dynamic Setting <TFeatureEnum>(this TFeatureEnum feature, Enum settingName, IFeatureManifest <TFeatureEnum> featureManifest) where TFeatureEnum : struct { Ensure.That <ArgumentNullException>(featureManifest.IsNotNull(), "featureManifest not supplied.") .And <FeatureNotAvailableException>(feature.IsAvailable(featureManifest), string.Format("Specified feature '{0}' is unavailable.", Enum.GetName(typeof(TFeatureEnum), feature))); try { //todo: refactor string enumItemName = Enum.GetName(settingName.GetType(), settingName); FieldInfo enumItemMember = settingName.GetType().GetField(enumItemName); string enumItemFullName = null; if (enumItemMember != null) { var attribute = (FeatureSettingAttribute) enumItemMember.GetCustomAttributes(typeof(FeatureSettingAttribute), false) .FirstOrDefault(); if (attribute != null) { enumItemFullName = attribute.FullName; } } return(featureManifest[feature].Settings[enumItemFullName ?? enumItemName]); } catch (Exception e) { throw new Exception(string.Format("Unable to find setting \"{0}\".", settingName), e); } }
//MiniProfiler miniProfiler) public RegisterControllerFactoryWithMvcBootstrapperTask(IServiceLocator serviceLocator, ControllerBuilder currentControllerBuilder, IFeatureManifest<Feature> featureManifest) { _serviceLocator = serviceLocator; _currentControllerBuilder = currentControllerBuilder; _featureManifest = featureManifest; //_miniProfiler = miniProfiler; }
public void Setup() { var availabilityChecker = new FeatureSettingAvailabilityChecker<Feature, EmptyArgs, DefaultTenantEnum>(MyAvailabilityCheckFunction); var featureSettingRepo = new AppConfigFeatureSettingRepository<Feature, DefaultTenantEnum>(); var featureSettingService = new FeatureSettingService<Feature, DefaultTenantEnum, EmptyArgs>(availabilityChecker, featureSettingRepo); var manifestCreationStrategy = new ManifestCreationStrategyDefault<Feature, DefaultTenantEnum>(featureSettingRepo, featureSettingService); var featureManifestService = new FeatureManifestService<Feature>(manifestCreationStrategy); _featureManifest = featureManifestService.GetManifest(); }
public static bool IsAvailable <TFeatureEnum>(this TFeatureEnum feature, IFeatureManifest <TFeatureEnum> featureManifest) where TFeatureEnum : struct { Ensure.That <ArgumentNullException>(featureManifest.IsNotNull(), "featureManifest not supplied."); try { return(featureManifest[feature].IsAvailable); } catch (KeyNotFoundException e) { throw new FeatureNotConfiguredException <TFeatureEnum>(feature, e); } }