/// <summary> /// overridden to declare how the configuration set sets up the information required to build, configure and validate the configurations. /// </summary> /// <param name="modelBuilder">ConfigurationSetModelBuilder used to construct ConfigurationSetModel</param> protected virtual void OnModelCreation(ConfigurationSetModelBuilder <T> modelBuilder) { foreach (var propertyInfo in typeof(T).GetProperties().Where(info => info.PropertyType.IsConstructedGenericType && info.PropertyType.GetGenericTypeDefinition() == typeof(Config <>))) { modelBuilder.AddConfig(propertyInfo.Name, propertyInfo.PropertyType.GenericTypeArguments[0]); } }
/// <summary> /// Builds the ConfigurationSetModel that contains the information required to build, configure and validate the configuration /// </summary> /// <returns>Initialized ConfigurationSetModel</returns> public ConfigurationSetModel BuildConfigurationSetModel() { var builder = new ConfigurationSetModelBuilder <T>(Name ?? this.GetType().Name, Description); OnModelCreation(builder); return(builder.Build()); }
/// <summary> /// Gets ConfigurationModelBuilder for Options /// </summary> /// <typeparam name="TConfiguration">Option Type</typeparam> /// <typeparam name="TConfigurationSet">ConfigurationSet type</typeparam> /// <param name="source">ConfigurationSetModelBuilder</param> /// <param name="expression">Path to Options</param> /// <param name="keySelector">Option Key Selector</param> /// <param name="descriptionSelector">Option Description Selector</param> /// <param name="optionProvider">Option provider</param> /// <returns>ConfigurationModelBuilder for Options</returns> public static ConfigurationModelBuilder <TConfiguration, TConfigurationSet> Options <TConfiguration, TConfigurationSet>(this ConfigurationSetModelBuilder <TConfigurationSet> source, Expression <Func <TConfigurationSet, OptionSet <TConfiguration> > > expression, Func <TConfiguration, int> keySelector, Func <TConfiguration, object> descriptionSelector, Func <ConfigurationIdentity, IEnumerable <TConfiguration> > optionProvider) where TConfiguration : class, new() where TConfigurationSet : ConfigurationSet <TConfigurationSet>, new() { return(source.Options(expression, keySelector, descriptionSelector, optionProvider, typeof(TConfiguration).Name, string.Empty)); }
/// <summary> /// Gets ConfigurationModelBuilder for Options /// </summary> /// <typeparam name="TConfiguration">Option Type</typeparam> /// <typeparam name="TConfigurationSet">ConfigurationSet type</typeparam> /// <param name="source">ConfigurationSetModelBuilder</param> /// <param name="expression">Path to Options</param> /// <param name="keySelector">Option Key Selector</param> /// <param name="descriptionSelector">Option Description Selector</param> /// <param name="optionProvider">Option provider</param> /// <param name="displayName">Display name for the config</param> /// <returns>ConfigurationModelBuilder for Options</returns> public static ConfigurationModelBuilder <TConfiguration, TConfigurationSet> Options <TConfiguration, TConfigurationSet>(this ConfigurationSetModelBuilder <TConfigurationSet> source, Expression <Func <TConfigurationSet, OptionSet <TConfiguration> > > expression, Func <TConfiguration, int> keySelector, Func <TConfiguration, object> descriptionSelector, Func <IEnumerable <TConfiguration> > optionProvider, string displayName) where TConfiguration : class, new() where TConfigurationSet : ConfigurationSet <TConfigurationSet>, new() { return(source.Options(expression, option => keySelector(option).ToString(), descriptionSelector, optionProvider, displayName, string.Empty)); }
/// <summary> /// Gets ConfigurationModelBuilder for type /// </summary> /// <typeparam name="TConfiguration">Configuration type</typeparam> /// <typeparam name="TConfigurationSet">ConfigurationSet type</typeparam> /// <param name="source">ConfigurationSetModelBuilder</param> /// <param name="expression">Path to config</param> /// <param name="displayName">Display name for the config</param> /// <returns>ConfigurationModelBuilder for type</returns> public static ConfigurationModelBuilder <TConfiguration, TConfigurationSet> Config <TConfiguration, TConfigurationSet>(this ConfigurationSetModelBuilder <TConfigurationSet> source, Expression <Func <TConfigurationSet, Config <TConfiguration> > > expression, string displayName) where TConfiguration : class, new() where TConfigurationSet : ConfigurationSet <TConfigurationSet>, new() { return(source.Config(expression, displayName, string.Empty)); }
/// <summary> /// Gets ConfigurationModelBuilder for Options /// </summary> /// <typeparam name="TConfiguration">Option Type</typeparam> /// <typeparam name="TConfigurationSet">ConfigurationSet type</typeparam> /// <param name="source">ConfigurationSetModelBuilder</param> /// <param name="expression">Path to Options</param> /// <param name="keySelector">Option Key Selector</param> /// <param name="descriptionSelector">Option Description Selector</param> /// <returns>ConfigurationModelBuilder for Options</returns> public static ConfigurationModelBuilder <TConfiguration, TConfigurationSet> Options <TConfiguration, TConfigurationSet>(this ConfigurationSetModelBuilder <TConfigurationSet> source, Expression <Func <TConfigurationSet, OptionSet <TConfiguration> > > expression, Expression <Func <TConfiguration, long> > keySelector, Func <TConfiguration, object> descriptionSelector) where TConfiguration : class, new() where TConfigurationSet : ConfigurationSet <TConfigurationSet>, new() { return(source.Options(expression, keySelector, descriptionSelector, typeof(TConfiguration).Name, string.Empty)); }