示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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
                       ));
        }
示例#3
0
 /// <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));
 }
示例#4
0
 /// <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]);
 }
示例#5
0
 /// <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));
 }