private static List <ParameterDescriptor> GetCommandParameters(Type commandType)
        {
            List <PropertyInfo> parameterProperties
                = AttributesHelper.FindPropertiesWithAttribute <CommandArgumentAttribute>(commandType);

            List <ParameterDescriptor> result = new List <ParameterDescriptor>();

            foreach (PropertyInfo parameterProperty in parameterProperties)
            {
                ParameterDescriptor parameter = new ParameterDescriptor();
                parameter.ParameterPropertyInfo = parameterProperty;

                CommandArgumentAttribute a;
                parameterProperty.TryGetAttribute(out a);
                parameter.ParameterName = a.ArgumentName;

                if (a.ComponentType != null)
                {
                    parameter.ComponentType = a.ComponentType;
                }
                if (a.SuggestedValue != null)
                {
                    parameter.SuggestedValue = a.SuggestedValue;
                }
                if (a.AllowNullInput)
                {
                    parameter.AllowNullInput = true;
                }
                if (!string.IsNullOrEmpty(a.ModifiedPropertyName))
                {
                    parameter.ModifiedComponentPropertyName = a.ModifiedPropertyName;
                }

                parameter.CreateEditorHierarchy = a.CreateEditorHierarchy;
                parameter.CreateControlInEdtors = a.CreateControlInEditors;

                result.Add(parameter);
            }

            return(result);
        }