Exemplo n.º 1
0
        internal static RuntimeDefinedParameterDictionary SettingInfoToParameters(SettingInfoDictionary settingInfos)
        {
            var result = new RuntimeDefinedParameterDictionary();

            foreach (var item in settingInfos)
            {
                var attributes = new Collection <Attribute> {
                    new ParameterAttribute()
                };
                switch (item.Value)
                {
                // Boolean settings are converted to switch parameters
                case BoolSettingInfo:
                    result.Add(item.Key, new(item.Key, typeof(SwitchParameter), attributes));
                    break;

                // Integer settings have range validation
                case IntSettingInfo intSettingInfo:
                    attributes.Add(new ValidateRangeAttribute(intSettingInfo.MinValue, intSettingInfo.MaxValue));
                    goto default;

                // String settings have set validation
                case StringSettingInfo stringSettingInfo:
                    attributes.Add(new ValidateSetAttribute(stringSettingInfo.AcceptedValues.ToArray()));
                    goto default;

                default:
                    result.Add(item.Key, new(item.Key, item.Value.ValueType, attributes));
                    break;
                }
            }
            return(result);
        }
        internal ValidatingSettingDictionary([NotNull] SettingInfoDictionary settingInfos, [CanBeNull] SettingDictionary settings = null)
        {
            _settingInfos = settingInfos;

            if (settings == null)
            {
                return;
            }

            foreach (var setting in settings)
            {
                Add(setting);
            }
        }