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);
        }
        public static void SetPropertyValues(object instance, ICollection <PropertyParameter> definedParameters, IEnumerable <IParameterInput> inputParameters)
        {
            var values = new ParameterValuesList <PropertyParameter>(definedParameters);

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

            var allValues = values.GetParameterValues();

            foreach (var defPrm in definedParameters)
            {
                object value;
                if (!allValues.TryGetValue(defPrm, out value))
                {
                    if (defPrm.AllowsDefaultValue)
                    {
                        value = defPrm.DefaultValue;
                    }
                    else
                    {
                        throw new Exception($"{defPrm.Name} parameter value wasn't supplied");
                    }
                }

                defPrm.Property.SetValue(instance, value);
            }
        }