Example #1
0
        private object[] BindParametesValues(IEnumerable <IParameterInput> inputParameters)
        {
            var parameters = new object[Parameters.Count];

            var values = new ParameterValuesList <MethodParameter>(Parameters);

            foreach (var inputParameter in inputParameters)
            {
                values.SetParameterValue(inputParameter);
            }

            var allValues = values.GetParameterValues();

            foreach (var defPrm in Parameters)
            {
                object value;
                if (!allValues.TryGetValue(defPrm, out value))
                {
                    if (defPrm.AllowsDefaultValue)
                    {
                        parameters[defPrm.PositionIndex] = defPrm.DefaultValue;
                        continue;
                    }

                    throw new Exception($"{defPrm.Name} parameter value wasn't supplied");
                }

                parameters[defPrm.PositionIndex] = defPrm.IsCollection
                                        ? CollectionConstructor.CreateInstance(defPrm.Type, value)
                                        : value;
            }
            return(parameters);
        }
Example #2
0
        public PropertyParameter(PropertyInfo property, CommandParameterDescriptor description) :
            base(description)
        {
            Property = property;

            ValueType = IsCollection
                                ? CollectionConstructor.GetElementType(property.PropertyType)
                                : property.PropertyType;
        }
Example #3
0
        public MethodParameter(ParameterInfo parameter)
            : base(CommandParameterDescriptor.CreateFor(parameter))
        {
            _parameter = parameter;

            ValueType = IsCollection
                ? CollectionConstructor.GetElementType(_parameter.ParameterType)
                : _parameter.ParameterType;

            Debug.Assert(!parameter.IsOut);
        }
        public static CommandParameterDescriptor CreateFor(PropertyInfo property)
        {
            var descriptor = new CommandParameterDescriptor
            {
                AllowsDefaultValue = true,
                Name          = property.Name.ToLower(),
                IsCollection  = CollectionConstructor.IsSupportedCollectionType(property.PropertyType),
                PositionIndex = -1
            };

            var attr = property.GetCustomAttribute <ParameterAttribute>();

            if (attr == null)
            {
                return(descriptor);
            }

            attr.SetCreateDescriptorValues(descriptor);
            return(descriptor);
        }
        public static CommandParameterDescriptor CreateFor(ParameterInfo parameter)
        {
            var descriptor = new CommandParameterDescriptor
            {
                Name = parameter.Name.ToLower(),
                AllowsDefaultValue = parameter.HasDefaultValue,
                DefaultValue       = parameter.DefaultValue,
                IsCollection       = CollectionConstructor.IsSupportedCollectionType(parameter.ParameterType),
                PositionIndex      = parameter.Position
            };

            var attr = parameter.GetCustomAttribute <ParameterAttribute>();

            if (attr == null)
            {
                return(descriptor);
            }

            attr.SetCreateDescriptorValues(descriptor);
            return(descriptor);
        }