public void SetValueOverride()

in src/AWS.Deploy.Common/Recipes/OptionSettingItem.ValueOverride.cs [97:147]


        public void SetValueOverride(object valueOverride)
        {
            var isValid = true;
            var validationFailedMessage = string.Empty;
            foreach (var validator in this.BuildValidators())
            {
                var result = validator.Validate(valueOverride);
                if (!result.IsValid)
                {
                    isValid = false;
                    validationFailedMessage += result.ValidationFailedMessage + Environment.NewLine;
                }
            }
            if (!isValid)
                throw new ValidationFailedException(DeployToolErrorCode.OptionSettingItemValueValidationFailed, validationFailedMessage.Trim());

            if (AllowedValues != null && AllowedValues.Count > 0 && valueOverride != null &&
                !AllowedValues.Contains(valueOverride.ToString() ?? ""))
                throw new InvalidOverrideValueException(DeployToolErrorCode.InvalidValueForOptionSettingItem, $"Invalid value for option setting item '{Name}'");

            if (valueOverride is bool || valueOverride is int || valueOverride is long || valueOverride is double || valueOverride is Dictionary<string, string>)
            {
                _valueOverride = valueOverride;
            }
            else if (valueOverride is string valueOverrideString)
            {
                if (bool.TryParse(valueOverrideString, out var valueOverrideBool))
                {
                    _valueOverride = valueOverrideBool;
                }
                else if (int.TryParse(valueOverrideString, out var valueOverrideInt))
                {
                    _valueOverride = valueOverrideInt;
                }
                else
                {
                    _valueOverride = valueOverrideString;
                }
            }
            else
            {
                var deserialized = JsonConvert.DeserializeObject<Dictionary<string, object>>(JsonConvert.SerializeObject(valueOverride));
                foreach (var childOptionSetting in ChildOptionSettings)
                {
                    if (deserialized.TryGetValue(childOptionSetting.Id, out var childValueOverride))
                    {
                        childOptionSetting.SetValueOverride(childValueOverride);
                    }
                }
            }
        }