/// <summary> /// Set option with given value. /// </summary> /// <param name="name">Option name.</param> /// <param name="value">Option value.</param> internal void SetOption(QualifiedOptionName name, object value) { var associatedProperty = getOptionProperty(name); this.DirectPropertySet(associatedProperty, value); var info = GetOptionInfo(name); if (info.IsContainer) { registerContainer(info, value); } }
/// <summary> /// Create option info described by optionProperty. Option is placed in section with sectionName. /// </summary> /// <param name="sectionName">Name of parent section.</param> /// <param name="optionProperty">Property describing option.</param> /// <returns>Option info.</returns> internal static OptionInfo CreateOptionInfo(QualifiedSectionName sectionName, PropertyInfo optionProperty) { var infoAttr = ReflectionUtils.GetAttribute <OptionInfoAttribute>(optionProperty); var commentAttr = ReflectionUtils.GetAttribute <DefaultCommentAttribute>(optionProperty); var rangeAttr = ReflectionUtils.GetAttribute <RangeAttribute>(optionProperty); var optionID = resolveID(infoAttr.ID, optionProperty); var optionName = new QualifiedOptionName(sectionName, optionID); var expectedType = optionProperty.PropertyType; var defaultValue = createDefaultObject(optionProperty, infoAttr.DefaultValue); return(new OptionInfo( optionName, expectedType, optionProperty.Name, defaultValue, infoAttr.IsOptional, commentAttr.CommentText, rangeAttr.LowerBound, rangeAttr.UpperBound )); }
/// <summary> /// Get option info for given name. /// </summary> /// <param name="name">Option name.</param> /// <returns>Option info.</returns> internal OptionInfo GetOptionInfo(QualifiedOptionName name) { return(_sections[name.Section].GetOptionInfo(name)); }
/// <summary> /// Get name of property associated with option of given name. /// </summary> /// <param name="name">Option name.</param> /// <returns>Name of property associated with option.</returns> private string getOptionProperty(QualifiedOptionName name) { return(_associatedProperties[name]); }
/// <summary> /// Get option info for given name. /// </summary> /// <param name="name">Option name.</param> /// <returns>Option info.</returns> internal OptionInfo GetOptionInfo(QualifiedOptionName name) { return(_info.GetOptionInfo(name)); }