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); } }