/// <summary>
        /// Renders the Settings &amp; Styles associated with the current <see cref="JObject"/>.
        /// </summary>
        /// <param name="helper">The <see cref="HtmlHelper"/> instance.</param>
        /// <param name="contentItem">The <see cref="JObject"/> item which holds the configuration for Settings & Styles. This is typically an area or row in the Umbraco Grid.</param>
        /// <param name="attributesResolver">Optional Attributes Resolver: this provides bespoke logic for grouping attributes together.</param>
        /// <param name="attributeValueResolvers">Optional Attribute Value Resolver: Once attributes are grouped Attribute Value Resolvers can tailor the output of a given grouping.</param>
        /// <param name="defaultAttributeValueResolver">Optional Default Attribute Value Resolver: If an <see cref="IGridSettingsAttributeValueResolver"/> can not be found for a specific property this <see cref="IGridSettingsAttributeValueResolver"/> is used insteads.</param>
        /// <returns>A <see cref="MvcHtmlString" /> containing all the resolved attributes with their values.</returns>
        public static MvcHtmlString RenderGridSettingAttributes(this HtmlHelper helper, JObject contentItem, IGridSettingsAttributesResolver attributesResolver = null, IDictionary <string, IGridSettingsAttributeValueResolver> attributeValueResolvers = null, IGridSettingsAttributeValueResolver defaultAttributeValueResolver = null)
        {
            var attributesService = new GridSettingsAttributesService(attributesResolver, defaultAttributeValueResolver, attributeValueResolvers);

            return(helper.RenderGridSettingAttributes(contentItem, attributesService));
        }
 public GridSettingsAttributesService(IGridSettingsAttributesResolver attributesResolver = null, IGridSettingsAttributeValueResolver defaultAttributeValueResolver = null, IDictionary <string, IGridSettingsAttributeValueResolver> attributeValueResolvers = null)
 {
     _attributesResolver            = attributesResolver ?? new GroupByKeyGridSettingsAttributesResolver();
     _defaultAttributeValueResolver = defaultAttributeValueResolver ?? new StringConcatGridSettingValueResolver();
     _attributeValueResolvers       = attributeValueResolvers ?? new Dictionary <string, IGridSettingsAttributeValueResolver>();
 }