private ParameterProfile BuildParameterProfile(IParameter parameter) { Type parameterType = TypeManager.GetType(parameter.TypeManagerName); bool isRequired = false; BaseValueProvider defaultValueProvider; if (string.IsNullOrEmpty(parameter.DefaultValueFunctionMarkup)) { defaultValueProvider = new NoValueValueProvider(); isRequired = true; } else { defaultValueProvider = new FunctionValueProvider(XElement.Parse(parameter.DefaultValueFunctionMarkup)); } WidgetFunctionProvider widgetFunctionProvider; if (string.IsNullOrEmpty(parameter.WidgetFunctionMarkup) == false) { widgetFunctionProvider = new WidgetFunctionProvider(XElement.Parse(parameter.WidgetFunctionMarkup)); } else { widgetFunctionProvider = WidgetFunctionProvider.BuildNoWidgetProvider(); } return(new ParameterProfile(parameter.Name, parameterType, isRequired, defaultValueProvider, widgetFunctionProvider, parameter.Label, new HelpDefinition(parameter.HelpText))); }
internal static ParameterProfile BuildParameterProfile(string name, Type type, FunctionParameterAttribute attribute, Type controllerType) { BaseValueProvider defaultValueProvider = new NoValueValueProvider(); string label = name; string helpText = String.Empty; if (!attribute.Label.IsNullOrEmpty()) { label = attribute.Label; } if (!attribute.Help.IsNullOrEmpty()) { helpText = attribute.Help; } bool isRequired = !attribute.HasDefaultValue; if (!isRequired) { defaultValueProvider = new ConstantValueProvider(attribute.DefaultValue); } WidgetFunctionProvider widgetProvider = attribute.GetWidgetFunctionProvider(controllerType, null); bool hideInSimpleView = attribute.HideInSimpleView; if (widgetProvider == null) { widgetProvider = StandardWidgetFunctions.GetDefaultWidgetFunctionProviderByType(type, isRequired); } return(new ParameterProfile(name, type, isRequired, defaultValueProvider, widgetProvider, label, new HelpDefinition(helpText), hideInSimpleView)); }
private IList <ParameterProfile> InitializeParamteres() { ParameterInfo[] parameterInfos = this.MethodInfo.GetParameters(); var defaultValues = new Dictionary <string, object>(); var labels = new Dictionary <string, string>(); var helpTexts = new Dictionary <string, string>(); var widgetProviders = new Dictionary <string, WidgetFunctionProvider>(); var parametersToHideInSimpleView = new HashSet <string>(); foreach (object obj in this.MethodInfo.GetCustomAttributes(typeof(MethodBasedDefaultValueAttribute), true)) { MethodBasedDefaultValueAttribute attribute = (MethodBasedDefaultValueAttribute)obj; defaultValues.Add(attribute.ParameterName, attribute.DefaultValue); } // Run through obsolete FunctionParameterDescriptionAttribute #pragma warning disable 612,618 foreach ( object obj in this.MethodInfo.GetCustomAttributes(typeof(FunctionParameterDescriptionAttribute), true)) { FunctionParameterDescriptionAttribute attribute = (FunctionParameterDescriptionAttribute)obj; if (attribute.HasDefaultValue && !defaultValues.ContainsKey(attribute.ParameterName)) { defaultValues.Add(attribute.ParameterName, attribute.DefaultValue); } labels.Add(attribute.ParameterName, attribute.ParameterLabel); helpTexts.Add(attribute.ParameterName, attribute.ParameterHelpText); } #pragma warning restore 612,618 // Run trhough new and improved FunctionParameterAttribute. Many may exist for one parameter. foreach (object obj in this.MethodInfo.GetCustomAttributes(typeof(FunctionParameterAttribute), true)) { var attribute = (FunctionParameterAttribute)obj; Verify.That(attribute.HasName, "All [FunctionParameter(...)] definitions on the method '{0}' must have 'Name' specified.", this.MethodInfo.Name); string parameterName = attribute.Name; if (attribute.HasDefaultValue && !defaultValues.ContainsKey(parameterName)) { defaultValues.Add(parameterName, attribute.DefaultValue); } if (attribute.HasLabel && !labels.ContainsKey(parameterName)) { labels.Add(parameterName, attribute.Label); } if (attribute.HasHelp && !helpTexts.ContainsKey(parameterName)) { helpTexts.Add(parameterName, attribute.Help); } if (attribute.HasWidgetMarkup && !widgetProviders.ContainsKey(parameterName)) { try { var widgetFunctionProvider = attribute.GetWidgetFunctionProvider(null, null); widgetProviders.Add(parameterName, widgetFunctionProvider); } catch (Exception ex) { string errText = "Failed to set Widget Markup for parameter '{0}' on method '{1}'. {2}" .FormatWith(parameterName, this.MethodInfo.Name, ex.Message); throw new InvalidOperationException(errText); } } if (attribute.HideInSimpleView) { parametersToHideInSimpleView.Add(parameterName); } } var result = new List <ParameterProfile>(); foreach (ParameterInfo parameterInfo in parameterInfos) { string parameterName = parameterInfo.Name; BaseValueProvider valueProvider; object defaultValue = null; if (defaultValues.TryGetValue(parameterName, out defaultValue)) { valueProvider = new ConstantValueProvider(defaultValue); } else { valueProvider = new NoValueValueProvider(); } bool isRequired = !defaultValues.ContainsKey(parameterName); string parameterLabel = parameterInfo.Name; if (labels.ContainsKey(parameterName)) { parameterLabel = labels[parameterName]; } string parameterHelpText = ""; if (helpTexts.ContainsKey(parameterName)) { parameterHelpText = helpTexts[parameterName]; } WidgetFunctionProvider widgetFunctionProvider = (widgetProviders.ContainsKey(parameterName) ? widgetProviders[parameterName] : StandardWidgetFunctions.GetDefaultWidgetFunctionProviderByType(parameterInfo.ParameterType)); bool hideInSimpleView = parametersToHideInSimpleView.Contains(parameterName); result.Add(new ParameterProfile(parameterName, parameterInfo.ParameterType, isRequired, valueProvider, widgetFunctionProvider, parameterLabel, new HelpDefinition(parameterHelpText), hideInSimpleView)); } return(result); }