コード例 #1
0
 private object GetConfigPropertyValueFromInput(JObject source, IMultipleOptionPropertyDefinition propertyModel, ConfigurationIdentity configIdentity, IEnumerable <ConfigurationSet> requiredConfigurationSets)
 {
     if (propertyModel is ConfigurationPropertyWithMultipleOptionValuesModelDefinition valueDefintion)
     {
         return(GetConfigMultipleOptionPropertyValueFromInput(source, valueDefintion, configIdentity, requiredConfigurationSets));
     }
     return(GetConfigMultipleOptionPropertyValueFromInput(source, propertyModel, configIdentity, requiredConfigurationSets));
 }
コード例 #2
0
 private void UpdateOptions(object source, IMultipleOptionPropertyDefinition model, IEnumerable <ConfigurationSet> configurationSets, ConfigurationIdentity configIdentity)
 {
     if (model is ConfigurationPropertyWithMultipleOptionValuesModelDefinition valueModel)
     {
         UpdateMultipleOptions(source, valueModel, configurationSets, configIdentity);
     }
     else
     {
         UpdateMultipleOptions(source, model, configurationSets, configIdentity);
     }
 }
コード例 #3
0
        private object GetPropertyValue(object source, IMultipleOptionPropertyDefinition propertyModel)
        {
            var collection    = propertyModel.GetPropertyValue(source) as IEnumerable ?? new List <object>();
            var isOptionValue = propertyModel is ConfigurationPropertyWithMultipleOptionValuesModelDefinition;
            var result        = new List <string>();

            foreach (var item in collection)
            {
                var itemValue = isOptionValue? item.ToString() : optionSetFactory.GetKeyFromObject(item, propertyModel);
                result.Add(itemValue);
            }
            return(result);
        }
コード例 #4
0
        private object GetConfigMultipleOptionPropertyValueFromInput(JObject source, IMultipleOptionPropertyDefinition propertyModel, ConfigurationIdentity configIdentity, IEnumerable <ConfigurationSet> requiredConfigurationSets)
        {
            var collectionBuilder = propertyModel.GetCollectionBuilder();
            var optionSet         = optionSetFactory.Build(propertyModel, configIdentity, requiredConfigurationSets);

            foreach (var key in source.GetValue(propertyModel.ConfigurationPropertyName.ToLowerCamelCase())?.Select(s => s.ToObject <string>()) ?? Enumerable.Empty <string>())
            {
                if (optionSet.TryGetValue(key, out var option))
                {
                    collectionBuilder.Add(option);
                }
            }
            return(collectionBuilder.Collection);
        }
コード例 #5
0
        private void UpdateMultipleOptions(object source, IMultipleOptionPropertyDefinition model, IEnumerable <ConfigurationSet> configurationSets, ConfigurationIdentity configIdentity)
        {
            var optionSet         = optionSetFactory.Build(model, configIdentity, configurationSets);
            var collectionBuilder = model.GetCollectionBuilder();
            var items             = model.GetPropertyValue(source) as IEnumerable;

            foreach (var item in items ?? Enumerable.Empty <object>())
            {
                if (optionSet.TryGetValue(item, out var actualValue))
                {
                    collectionBuilder.Add(actualValue);
                }
            }
            model.SetPropertyValue(source, collectionBuilder.Collection);
        }
コード例 #6
0
        private ValidationResult ValidateProperty(object target, IMultipleOptionPropertyDefinition propertyModel, ConfigurationIdentity configIdentity, IEnumerable <ConfigurationSet> configurationSets)
        {
            var errors        = new List <string>();
            var propertyValue = propertyModel.GetPropertyValue(target) as IEnumerable;
            var options       = optionSetFactory.Build(propertyModel, configIdentity, configurationSets);
            var isOptionValue = propertyModel is ConfigurationPropertyWithMultipleOptionValuesModelDefinition;

            foreach (var value in propertyValue)
            {
                if ((isOptionValue && options.ContainsKey(value)) || (!isOptionValue && options.OptionKeyInSet(value)))
                {
                    continue;
                }
                errors.Add(ValidationStrings.OptionNotFound(propertyModel.ConfigurationPropertyName));
                break;
            }
            return(new ValidationResult(errors));
        }